Design Tokens
Shopware Frontends provides a curated set of color design tokens through the @shopware/unocss-design-tokens-layer Nuxt layer. They are exposed as UnoCSS theme colors, follow a Material-style naming scheme, and serve as the foundation for consistent color usage across templates and layered storefronts.
Templates like the Vue Starter Template and its extended variant consume these tokens out of the box by extending the design-tokens layer.
Naming convention
Every token name follows the pattern <category>-<role>[-<variant>].
| Category | Purpose | Examples |
|---|---|---|
brand | Primary, secondary, and tertiary brand colours with hover/pressed states | brand-primary, brand-on-secondary |
surface | Backgrounds, containers, and their foreground (on-*) counterparts | surface-surface-container-high, surface-on-surface |
outline | Borders and dividers | outline-outline, outline-outline-focus |
states | Semantic feedback colours — info, success, warning, error | states-error, states-on-warning-container |
fixed | Colours that do not change between themes | fixed-fixed-on-image |
other | Miscellaneous — sale badges, shadows | other-sale, other-shadow |
overlay | Semi-transparent dark/light overlays | overlay-dark-high, overlay-light-low |
Usage
Because the tokens are registered as Uno theme.colors, they work with every color utility:
<div class="bg-brand-primary text-brand-on-primary">
Primary button
</div>
<p class="text-states-error">Something went wrong.</p>
<div class="border border-outline-outline rounded-md">
Card with outline border
</div>
<div class="bg-overlay-dark-high">
Dark overlay at 50 % opacity
</div>Customising tokens
Override or extend tokens in your project's uno.config.ts:
theme: {
colors: {
"brand-primary": "#123456", // overwrite an existing token
"custom-accent": "#FF00FF", // add a new token
},
}The documentation keeps a copy of the token map in apps/docs/.vitepress/data/design-tokens-colors.ts, aligned with packages/unocss-design-tokens-layer/uno.config.ts. Use the export button below to grab the full snippet ready to paste into your Uno config.
Token reference
Click a swatch to change its color. Copy or download includes your edits.
Brand
brand-on-primary#FFFFFFbg-brand-on-primarybrand-on-secondary#3A276Abg-brand-on-secondarybrand-on-tertiary#1D1B20bg-brand-on-tertiarybrand-primary#543B95bg-brand-primarybrand-primary-hover#45317Abg-brand-primary-hoverbrand-primary-pressed#45317Abg-brand-primary-pressedbrand-secondary#E1D5FFbg-brand-secondarybrand-secondary-hover#D0BCFCbg-brand-secondary-hoverbrand-secondary-pressed#D0BCFCbg-brand-secondary-pressedbrand-tertiary#F1F1F1bg-brand-tertiarybrand-tertiary-hover#E3E3E3bg-brand-tertiary-hoverbrand-tertiary-pressed#E3E3E3bg-brand-tertiary-pressedSurface
surface-background#FFFFFFbg-surface-backgroundsurface-inverse-on-surface#FFFFFFbg-surface-inverse-on-surfacesurface-inverse-surface#322F35bg-surface-inverse-surfacesurface-on-background#1D1B20bg-surface-on-backgroundsurface-on-surface#1D1B20bg-surface-on-surfacesurface-on-surface-disabled#9893A6bg-surface-on-surface-disabledsurface-on-surface-primary#3A276Abg-surface-on-surface-primarysurface-on-surface-variant#696470bg-surface-on-surface-variantsurface-surface#FFFFFFbg-surface-surfacesurface-surface-container#F3EDF7bg-surface-surface-containersurface-surface-container-high#ECE6F0bg-surface-surface-container-highsurface-surface-container-highest#E6E0E9bg-surface-surface-container-highestsurface-surface-container-low#F7F2FAbg-surface-surface-container-lowsurface-surface-container-lowest#FFFFFFbg-surface-surface-container-lowestsurface-surface-disabled#E8E8E8bg-surface-surface-disabledsurface-surface-primary#D0BCFFbg-surface-surface-primarysurface-surface-variant#FBF6FFbg-surface-surface-variantOutline
outline-outline#79747Ebg-outline-outlineoutline-outline-disabled#9893A6bg-outline-outline-disabledoutline-outline-focus#1722F9bg-outline-outline-focusoutline-outline-primary#543B95bg-outline-outline-primaryoutline-outline-variant#CAC4D0bg-outline-outline-variantStates
states-error#D12D24bg-states-errorstates-error-container#F9DEDCbg-states-error-containerstates-error-hover#AB251Dbg-states-error-hoverstates-error-pressed#AB251Dbg-states-error-pressedstates-info#0288D1bg-states-infostates-info-container#BBE7FFbg-states-info-containerstates-info-hover#0275B4bg-states-info-hoverstates-info-pressed#0275B4bg-states-info-pressedstates-on-error#FFFFFFbg-states-on-errorstates-on-error-container#852221bg-states-on-error-containerstates-on-info#FFFFFFbg-states-on-infostates-on-info-container#013957bg-states-on-info-containerstates-on-success#FFFFFFbg-states-on-successstates-on-success-container#09480Cbg-states-on-success-containerstates-on-warning#FFFFFFbg-states-on-warningstates-on-warning-container#874400bg-states-on-warning-containerstates-success#15B31Cbg-states-successstates-success-container#C9FFCBbg-states-success-containerstates-success-hover#108C16bg-states-success-hoverstates-success-pressed#108C16bg-states-success-pressedstates-warning#F57C00bg-states-warningstates-warning-container#FFE1C2bg-states-warning-containerstates-warning-hover#C26200bg-states-warning-hoverstates-warning-pressed#C26200bg-states-warning-pressedFixed
fixed-fixed-on-image#FFFFFFbg-fixed-fixed-on-imageOther
other-sale#D12D24bg-other-saleother-shadow#000000bg-other-shadowOverlay
overlay-darkrgba(0, 0, 0, 0.30000001192092896)bg-overlay-darkoverlay-dark-highrgba(0, 0, 0, 0.5)bg-overlay-dark-highoverlay-dark-highestrgba(0, 0, 0, 0.75)bg-overlay-dark-highestoverlay-dark-lowrgba(0, 0, 0, 0.11999999731779099)bg-overlay-dark-lowoverlay-dark-lowestrgba(0, 0, 0, 0.07999999821186066)bg-overlay-dark-lowestoverlay-lightrgba(255, 255, 255, 0.25)bg-overlay-lightoverlay-light-highrgba(255, 255, 255, 0.5)bg-overlay-light-highoverlay-light-highestrgba(255, 255, 255, 0.75)bg-overlay-light-highestoverlay-light-lowrgba(255, 255, 255, 0.11999999731779099)bg-overlay-light-lowoverlay-light-lowestrgba(255, 255, 255, 0.07999999821186066)bg-overlay-light-lowest