Saltar al contenido principal
Version: Next (5.0)

Referencia de tokens

Todos los tokens de la propuesta de AWE 5, generados a partir del tokens.css del prototipo, y la correspondencia con los tokens actuales. Para verlos aplicados en los dos modos, abra la página de tokens del prototipo.

NivelTokens
1 · Primitivo242
1 · Configurable27
2 · Semántico257
3 · Componente58
Solo del prototipo5
Total589

Cómo leer las tablas:

  • Claro / Oscuro: los dos argumentos de light-dark(). "= claro" indica que el token no depende del modo.
  • Cómoda / Compacta: el valor por densidad. Una celda Compacta vacía indica el mismo valor que en Cómoda.
  • var(--awe-primary-fill) y el resto de tokens configurables dependen de data-awe-primary y data-awe-surface.

Tokens​

Nivel 1: paletas primitivas​

Nombre: --awe-palette-<paleta>-<tono>. 22 paletas × 11 tonos = 242 tokens.

Paleta50100200300400500600700800900950
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

Nivel 1: paletas configurables​

Los valores siguientes son los de las paletas con nombre. Cuando un tema indica un hex, los mismos tokens contienen los valores generados (ver Paletas generadas a partir de un hex).

TokenValor por defecto (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

El primario se elige con data-awe-primary en <html>. Tonos de relleno por paleta (modo claro):

PaletaRellenoHoverActivoTexto sobre el relleno
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

Superficie: data-awe-surface en <html> (slate, gray, zinc, neutral, stone). Sin el atributo:

TokenClaroOscuro
--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)

Nivel 2: semánticos​

Color · Marca

TokenClaroOscuro
--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)= claro
--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)

Color · Texto

TokenClaroOscuro
--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)

Color · Página y contenido

TokenClaroOscuro
--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)= claro
--awe-color-content-hovervar(--awe-color-surface-hover)= claro
--awe-color-content-bordervar(--awe-color-border)= claro
--awe-color-maskrgb(0 0 0 / 0.4)rgb(0 0 0 / 0.6)

Color · Resaltado (opción, fila u opción de menú seleccionada)

TokenClaroOscuro
--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)

Color · Menú, cabecera, paneles y grids (vocabulario actual de AWE)

TokenClaroOscuro
--awe-color-menuvar(--awe-color-surface)= claro
--awe-color-menu-accentvar(--awe-color-highlight)= claro
--awe-color-menu-textvar(--awe-color-text)= claro
--awe-color-navbarvar(--awe-color-surface)= claro
--awe-color-navbar-accentvar(--awe-color-surface-hover)= claro
--awe-color-navbar-textvar(--awe-color-text)= claro
--awe-color-navbar-dropdownvar(--awe-color-overlay)= claro
--awe-color-panelvar(--awe-color-surface)= claro
--awe-color-panel-headervar(--awe-color-surface)= claro
--awe-color-panel-bordervar(--awe-color-border)= claro
--awe-color-panel-textvar(--awe-color-text)= claro
--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)= claro
--awe-color-skeletonvar(--awe-surface-200)var(--awe-surface-800)
--awe-color-skeleton-highlightvar(--awe-surface-100)var(--awe-surface-700)

Color · Capas superpuestas (listas, popovers, menús, diálogos)

TokenClaroOscuro
--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)= claro
--awe-color-tooltipvar(--awe-surface-800)var(--awe-surface-700)
--awe-color-on-tooltipvar(--awe-surface-0)= claro

Color · Campos de formulario

TokenClaroOscuro
--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)= claro
--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)= claro
--awe-color-field-labelvar(--awe-color-text-emphasis)= claro
--awe-color-field-helpvar(--awe-color-text-muted)= claro
--awe-color-field-focus-halocolor-mix(in srgb, var(--awe-color-primary), transparent 80%)= claro
--awe-color-field-invalid-halocolor-mix(in srgb, var(--awe-color-danger), transparent 82%)= claro

Color · Opciones de lista (select, autocompletar, menús)

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

Color · Elementos de navegación (menú lateral, breadcrumb, pestañas, menú de usuario)

TokenClaroOscuro
--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)= claro
--awe-color-nav-item-text-activevar(--awe-color-text-hover)= claro
--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)= claro

Color · Estados

TokenClaroOscuro
--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)= claro
--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)= claro
--awe-color-neutral-textvar(--awe-color-on-secondary)= claro
--awe-color-contrastvar(--awe-surface-950)var(--awe-surface-0)
--awe-color-on-contrastvar(--awe-surface-0)var(--awe-surface-950)

Visualización de datos

TokenClaroOscuro
--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)= claro
--awe-color-on-scale-1var(--awe-color-text-emphasis)= claro
--awe-color-on-scale-2var(--awe-color-text-emphasis)= claro
--awe-color-on-scale-3var(--awe-color-text-emphasis)= claro
--awe-color-on-scale-4var(--awe-color-text-emphasis)= claro
--awe-color-on-scale-5var(--awe-color-on-primary)= claro
--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)= claro
--awe-color-chart-areacolor-mix(in srgb, var(--awe-color-primary-text) 18%, transparent)= claro
--awe-color-chart-negativevar(--awe-color-danger)= claro
--awe-color-chart-axisvar(--awe-color-border)= claro
--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)

Tipografía

TokenCómodaCompacta
--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

Espaciado, radios, elevación, foco, movimiento, capas

TokenValorMovimiento reducido
--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

Densidad

TokenCómodaCompacta
--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

Nivel 3: componentes​

Grid, menú lateral, cabecera, capas superpuestas, control segmentado

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

Página de login

TokenCómodaCompacta
--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)

Solo del prototipo​

Logo de cliente de ejemplo

TokenClaroOscuro
--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)

Fichero de tokens de los motores​

Los dos motores cargan un único fichero, awe-framework/awe-design-tokens/tokens.css: el motor AngularJS lo incluye en su hoja de estilos (less/awe.less) y el motor React lo importa desde src/main.css. Contiene todos los tokens del prototipo salvo los exclusivos del prototipo, con los mismos valores; las pruebas de tokens de los dos motores lo comprueban. Deja fuera la fuente Inter y las reglas del modo de color (color-scheme). La fuente tiene su propio fichero compartido, awe-framework/awe-design-tokens/fonts/inter.css, junto a la fuente y su licencia SIL Open Font License; el motor React lo importa desde src/main.css y publica la licencia con la fuente (fonts/ del paquete). Cada motor fija el modo (color-scheme: light dark, o light / dark con la clase de <html>): el motor React en src/main.css y el motor AngularJS en less/awe/tokens.less. El motor AngularJS mantiene su fuente actual hasta que cargue Inter.

Ningún motor declara tokens propios. El motor AngularJS no tiene temas clásicos, ni /css/themeVariables.css, ni puente de nombres: sus variables LESS (@primary-color...) leen los tokens, así que sus reglas de Bootstrap 3 y pixel-admin siguen a los atributos de <html>. Los componentes de PrimeReact del motor React leen los tokens a través del tema AWE de PrimeReact.

La página de error del servidor (templates/error.html de awe-generic-screens), común a los dos motores, enlaza una copia del mismo fichero que awe-generic-screens publica como css/awe-design-tokens/tokens.css. La página no tiene atributos en <html>: fija color-scheme: light dark, así que sigue el modo de color del sistema con las paletas por defecto.

Tema AWE de PrimeReact​

El motor React carga un único tema para PrimeReact 10, generado a partir de los tokens en cada compilación; sustituye a saga-blue y a los 18 temas compilados, y el nombre del tema solo elige el preset de los atributos de <html>. awe-framework/awe-design-tokens/primereact/primereact-theme.cjs lee el tema Lara claro del primereact fijado (10.9.9, MIT) solo por sus selectores y sustituye cada color, tamaño y peso de letra, espaciado, tamaño, radio, sombra, anillo de foco y transición por un token --awe-*, mediante la tabla de equivalencias primereact-theme.json que está a su lado. Los valores siguen el preset Aura de @primeuix/themes 2.0.3 (MIT, solo como valores de referencia), como hace el prototipo. Un valor de Lara que la tabla no traduce, o un token que el fichero de tokens no declara, hace fallar la compilación, de modo que una actualización de PrimeReact no puede traer su propio aspecto. primeReactThemeTest.js comprueba el resultado: ningún color ni medida literal, solo tokens del fichero de tokens y las reglas de cada componente de PrimeReact que usa el motor.

Correspondencia con los tokens actuales​

Qué ocurre con los tokens y las variables de tema de AWE 4 y de la rama actual de AWE 5. Los tokens actuales están documentados en Design tokens.

Tokens actuales del motor AngularJS​

Los 56 tokens que tokens.less declaraba hasta que el motor AngularJS adoptó los valores de AWE 5. Ninguno se elimina ni cambia de nombre; algunos cambian de valor o de significado.

TokenAWE 5Nota
--awe-color-themeSe mantiene, significado nuevoAlias de --awe-color-primary.
--awe-color-textSe mantiene
--awe-color-primarySe mantiene
--awe-color-on-primarySe mantiene
--awe-color-secondarySe mantiene
--awe-color-on-secondarySe mantiene
--awe-color-backgroundSe mantiene
--awe-color-surfaceSe mantiene, significado nuevoSuperficie de tarjetas y contenido. El significado anterior (pies de panel, zonas de campos) es --awe-color-surface-subtle.
--awe-color-borderSe mantiene
--awe-color-shadowSe mantiene
--awe-color-menuSe mantiene, valor nuevoEl menú es una superficie clara (--awe-color-surface).
--awe-color-menu-accentSe mantiene, valor nuevoResaltado de la opción activa.
--awe-color-menu-textSe mantiene
--awe-color-navbarSe mantiene, valor nuevoLa cabecera es una superficie clara.
--awe-color-navbar-accentSe mantiene, valor nuevoSuperficie de hover de la cabecera.
--awe-color-navbar-textSe mantiene
--awe-color-navbar-dropdownSe mantiene, valor nuevoSuperficie de capa (--awe-color-overlay).
--awe-color-panelSe mantiene
--awe-color-panel-headerSe mantiene, valor nuevoLas cabeceras de tarjeta no tienen color: superficie de la tarjeta.
--awe-color-panel-borderSe mantiene
--awe-color-panel-textSe mantiene
--awe-color-grid-headerSe mantiene, valor nuevoLa superficie sutil, opaca: en modo oscuro la superficie sutil (semitransparente) se compone sobre las filas, para que la cabecera y el pie fijos tapen las filas que pasan por debajo al hacer scroll.
--awe-color-grid-borderSe mantiene
--awe-color-skeletonSe mantiene
--awe-color-skeleton-highlightSe mantiene
--awe-color-disabledSe mantiene
--awe-color-disabled-borderSe mantiene
--awe-color-disabled-textSe mantiene
--awe-color-requiredSe mantiene, significado nuevoColor de la marca de obligatorio (*), ya no es un fondo de campo.
--awe-color-loading-barSe mantiene, valor nuevoEl primario.
--awe-color-dangerSe mantiene
--awe-color-warningSe mantiene
--awe-color-successSe mantiene
--awe-color-infoSe mantiene
--awe-font-family-baseSe mantiene, valor nuevoInter.
--awe-font-family-monospaceSe mantiene
--awe-font-size-baseSe mantiene, valor nuevo14px; 13px en compacta.
--awe-font-size-smallSe mantiene, valor nuevoAlias de --awe-font-size-sm (13px; 12px en compacta).
--awe-line-height-baseSe mantiene
--awe-font-weight-normalSe mantiene
--awe-font-weight-boldSe mantiene
--awe-space-2xsSe mantiene
--awe-space-xsSe mantiene, valor nuevo4px (antes 5px).
--awe-space-smSe mantiene, valor nuevo8px (antes 10px).
--awe-space-mdSe mantiene, valor nuevo12px (antes 15px).
--awe-space-lgSe mantiene, valor nuevo16px (antes 20px).
--awe-space-xlSe mantiene, valor nuevo24px (antes 30px).
--awe-radiusSe mantiene, valor nuevo6px, alias de --awe-radius-md.
--awe-radius-smSe mantiene, valor nuevo4px fijo (antes la mitad del radio).
--awe-radius-lgSe mantiene, valor nuevo8px fijo (antes el doble del radio).
--awe-radius-fullSe mantiene
--awe-shadow-smSe mantiene, valor nuevoNueva escala de sombras.
--awe-shadow-mdSe mantiene, valor nuevoNueva escala de sombras.
--awe-shadow-lgSe mantiene, valor nuevoNueva escala de sombras.
--awe-size-header-heightSe mantiene, valor nuevo60px; 52px en compacta.
--awe-size-menu-widthSe mantiene, valor nuevo264px; 240px en compacta.

Tokens actuales del motor React​

Los 15 tokens que declaraba awe-client-react/src/main.css leían variables de PrimeReact. Ahora solo los declara el fichero de tokens común y el tema AWE de PrimeReact lee los tokens (al revés que antes).

TokenLeíaAWE 5
--awe-color-primary--primary-colorSe mantiene
--awe-color-on-primary--primary-color-textSe mantiene
--awe-color-text--text-colorSe mantiene
--awe-color-background--surface-groundSe mantiene
--awe-color-surface--surface-cardSe mantiene
--awe-color-panel--surface-cardSe mantiene
--awe-color-border--surface-borderSe mantiene
--awe-color-danger--danger-colorSe mantiene
--awe-color-warning--warning-colorSe mantiene
--awe-color-success--success-colorSe mantiene
--awe-color-info--info-colorSe mantiene
--awe-font-family-base--font-familySe mantiene
--awe-radius--border-radiusSe mantiene
--awe-color-skeleton--surface-cSe mantiene
--awe-color-skeleton-highlight--surface-bSe mantiene

Variables de tema y temas de base de datos​

Las variables de tema de AngularJS (temas LESS) y los campos de color de los temas de base de datos (tabla AweThmCol, servidos por AWE 4 en /css/themeVariables.css, eliminado en AWE 5) tienen los mismos nombres. En AWE 5 ninguno se configura: un tema es primario + superficie y el resto se deriva.

Campo de AweThmColVariable de temaAWE 5Estado
themeColor--theme-color--awe-color-theme → --awe-color-primaryEliminado: derivado
textColor--text-color--awe-color-textEliminado: derivado
primaryColor--primary-colordata-awe-primarySe mantiene como elección de paleta
secondaryColor--secondary-color--awe-color-secondaryEliminado: derivado
primaryTextColor--primary-text-color--awe-color-on-primary (--awe-primary-on-fill)Eliminado: derivado
secondaryTextColor--secondary-text-color--awe-color-on-secondaryEliminado: derivado
primaryBackgroundColor--primary-background-color--awe-color-backgroundEliminado: derivado
secondaryBackgroundColor--secondary-background-color--awe-color-surface-subtleEliminado: derivado
primaryMenuColor--primary-menu-color--awe-color-menuEliminado: derivado
secondaryMenuColor--secondary-menu-color--awe-color-menu-accentEliminado: derivado
menuTextColor--menu-text-color--awe-color-menu-textEliminado: derivado
primaryNavbarColor--primary-navbar-color--awe-color-navbarEliminado: derivado
secondaryNavbarColor--secondary-navbar-color--awe-color-navbar-accentEliminado: derivado
navbarDropdownColor--navbar-dropdown-color--awe-color-navbar-dropdownEliminado: derivado
navbarTextColor--navbar-text-color--awe-color-navbar-textEliminado: derivado
primaryFontSize--primary-font-size--awe-font-size-base (densidad)Eliminado: derivado
secondaryFontSize--secondary-font-size--awe-font-size-sm (densidad)Eliminado: derivado
disabledColor--disabled-color--awe-color-disabledEliminado: derivado
disabledBorderColor--disabled-border-color--awe-color-disabled-borderEliminado: derivado
disabledTextColor--disabled-text-color--awe-color-disabled-textEliminado: derivado
headerHeight--header-height--awe-size-header-height (densidad)Eliminado: derivado
panelHeaderColor--panel-header-color--awe-color-panel-headerEliminado: derivado
panelBorderColor--panel-border-color--awe-color-panel-borderEliminado: derivado
panelBackgroundColor--panel-background-color--awe-color-panelEliminado: derivado
panelTextColor--panel-text-color--awe-color-panel-textEliminado: derivado
gridHeaderColor--grid-header-color--awe-color-grid-headerEliminado: derivado
gridBorderColor--grid-border-color--awe-color-grid-borderEliminado: derivado
dangerColor--danger-color--awe-color-danger*Eliminado: derivado
warningColor--warning-color--awe-color-warning*Eliminado: derivado
successColor--success-color--awe-color-success*Eliminado: derivado
infoColor--info-color--awe-color-info*Eliminado: derivado
borderColor--border-color--awe-color-borderEliminado: derivado
borderRadius--border-radius--awe-radius-* (escala fija)Eliminado: derivado
loadingBarColor--loading-bar-color--awe-color-loading-barEliminado: derivado
requiredColor--required-color--awe-color-requiredEliminado: derivado
darklight-dark() en cada tokenSustituido por el modo

Nuevo en el tema de AWE 5: paleta de superficie (data-awe-surface) y, opcionalmente, modo y densidad por defecto.

La migración de Flyway AWE_V1.5.0 (en las 6 bases de datos) añade las columnas Pri (primario), Srf (superficie) y Mde (modo) a AweThm y HISAweThm, y density a AweUsrSet. Después rellena los temas:

  1. Los nombres de tema clásicos toman su preset.
  2. Un tema con un juego de colores claro en AweThmCol toma su primaryColor cuando es un hex (#RGB o #RRGGBB).
  3. Cada valor que sigue vacío toma el valor por defecto: emerald, auto y system.

No se borra nada: AweThmCol se conserva tal cual, sin uso, y se elimina en una versión posterior. La densidad del usuario queda vacía (la densidad de la aplicación) hasta que el usuario elige una.

El cliente React ya no carga las hojas theme.css compiladas de PrimeReact (saga-blue y los 18 temas clásicos): incluye un tema AWE de PrimeReact que lee los tokens.