Color tokens give designers and developers clear guidance on how and when to use the color palette. They make it easy to connect color names with their intended purpose.
Our color choices promote visual clarity, making it easy for users to find what they need. We use a
consistent palette to create a seamless and intuitive experience across all sections of the
application.
Brand tokens are themed variables designated for brand / tenant-level customization. They are not
connected to system tokens, which are intended to be application-wide. Brand tokens are used for our
buttons, focus rings, errors, inputs, and banners.
Note: Action tokens don’t have a color associated with them. They are meant to be used when you need a primary action to differ from the rest of the default theme. In the table below, no action token has been defined, therefore the color is blank.
primary
Swatch
CSS Variable
JS Variable
Value
--cnvs-brand-primary-100
brand.primary100
transparent
--cnvs-brand-primary-200
brand.primary200
transparent
--cnvs-brand-primary-25
brand.primary25
transparent
--cnvs-brand-primary-300
brand.primary300
transparent
--cnvs-brand-primary-400
brand.primary400
transparent
--cnvs-brand-primary-50
brand.primary50
transparent
--cnvs-brand-primary-500
brand.primary500
transparent
--cnvs-brand-primary-600
brand.primary600
transparent
--cnvs-brand-primary-700
brand.primary700
transparent
--cnvs-brand-primary-800
brand.primary800
transparent
--cnvs-brand-primary-900
brand.primary900
transparent
--cnvs-brand-primary-950
brand.primary950
transparent
--cnvs-brand-primary-975
brand.primary975
transparent
--cnvs-brand-primary-a100
brand.primaryA100
transparent
--cnvs-brand-primary-a200
brand.primaryA200
transparent
--cnvs-brand-primary-a25
brand.primaryA25
transparent
--cnvs-brand-primary-a50
brand.primaryA50
transparent
neutral
Swatch
CSS Variable
JS Variable
Value
--cnvs-brand-neutral-100
brand.neutral100
transparent
--cnvs-brand-neutral-200
brand.neutral200
transparent
--cnvs-brand-neutral-25
brand.neutral25
transparent
--cnvs-brand-neutral-300
brand.neutral300
transparent
--cnvs-brand-neutral-400
brand.neutral400
transparent
--cnvs-brand-neutral-50
brand.neutral50
transparent
--cnvs-brand-neutral-500
brand.neutral500
transparent
--cnvs-brand-neutral-600
brand.neutral600
transparent
--cnvs-brand-neutral-700
brand.neutral700
transparent
--cnvs-brand-neutral-800
brand.neutral800
transparent
--cnvs-brand-neutral-900
brand.neutral900
transparent
--cnvs-brand-neutral-950
brand.neutral950
transparent
--cnvs-brand-neutral-975
brand.neutral975
transparent
--cnvs-brand-neutral-a100
brand.neutralA100
transparent
--cnvs-brand-neutral-a200
brand.neutralA200
transparent
--cnvs-brand-neutral-a25
brand.neutralA25
transparent
--cnvs-brand-neutral-a300
brand.neutralA300
transparent
--cnvs-brand-neutral-a400
brand.neutralA400
transparent
--cnvs-brand-neutral-a50
brand.neutralA50
transparent
--cnvs-brand-neutral-a500
brand.neutralA500
transparent
--cnvs-brand-neutral-a600
brand.neutralA600
transparent
--cnvs-brand-neutral-a700
brand.neutralA700
transparent
--cnvs-brand-neutral-a800
brand.neutralA800
transparent
--cnvs-brand-neutral-a900
brand.neutralA900
transparent
--cnvs-brand-neutral-a950
brand.neutralA950
transparent
--cnvs-brand-neutral-a975
brand.neutralA975
transparent
critical
Swatch
CSS Variable
JS Variable
Value
--cnvs-brand-critical-100
brand.critical100
transparent
--cnvs-brand-critical-200
brand.critical200
transparent
--cnvs-brand-critical-25
brand.critical25
transparent
--cnvs-brand-critical-300
brand.critical300
transparent
--cnvs-brand-critical-400
brand.critical400
transparent
--cnvs-brand-critical-50
brand.critical50
transparent
--cnvs-brand-critical-500
brand.critical500
transparent
--cnvs-brand-critical-600
brand.critical600
transparent
--cnvs-brand-critical-700
brand.critical700
transparent
--cnvs-brand-critical-800
brand.critical800
transparent
--cnvs-brand-critical-900
brand.critical900
transparent
--cnvs-brand-critical-950
brand.critical950
transparent
--cnvs-brand-critical-975
brand.critical975
transparent
--cnvs-brand-critical-a100
brand.criticalA100
transparent
--cnvs-brand-critical-a200
brand.criticalA200
transparent
--cnvs-brand-critical-a25
brand.criticalA25
transparent
--cnvs-brand-critical-a50
brand.criticalA50
transparent
caution
Swatch
CSS Variable
JS Variable
Value
--cnvs-brand-caution-100
brand.caution100
transparent
--cnvs-brand-caution-200
brand.caution200
transparent
--cnvs-brand-caution-25
brand.caution25
transparent
--cnvs-brand-caution-300
brand.caution300
transparent
--cnvs-brand-caution-400
brand.caution400
transparent
--cnvs-brand-caution-50
brand.caution50
transparent
--cnvs-brand-caution-500
brand.caution500
transparent
--cnvs-brand-caution-600
brand.caution600
transparent
--cnvs-brand-caution-700
brand.caution700
transparent
--cnvs-brand-caution-800
brand.caution800
transparent
--cnvs-brand-caution-900
brand.caution900
transparent
--cnvs-brand-caution-950
brand.caution950
transparent
--cnvs-brand-caution-975
brand.caution975
transparent
--cnvs-brand-caution-a100
brand.cautionA100
transparent
--cnvs-brand-caution-a200
brand.cautionA200
transparent
--cnvs-brand-caution-a25
brand.cautionA25
transparent
--cnvs-brand-caution-a50
brand.cautionA50
transparent
positive
Swatch
CSS Variable
JS Variable
Value
--cnvs-brand-positive-100
brand.positive100
transparent
--cnvs-brand-positive-200
brand.positive200
transparent
--cnvs-brand-positive-25
brand.positive25
transparent
--cnvs-brand-positive-300
brand.positive300
transparent
--cnvs-brand-positive-400
brand.positive400
transparent
--cnvs-brand-positive-50
brand.positive50
transparent
--cnvs-brand-positive-500
brand.positive500
transparent
--cnvs-brand-positive-600
brand.positive600
transparent
--cnvs-brand-positive-700
brand.positive700
transparent
--cnvs-brand-positive-800
brand.positive800
transparent
--cnvs-brand-positive-900
brand.positive900
transparent
--cnvs-brand-positive-950
brand.positive950
transparent
--cnvs-brand-positive-975
brand.positive975
transparent
--cnvs-brand-positive-a100
brand.positiveA100
transparent
--cnvs-brand-positive-a200
brand.positiveA200
transparent
--cnvs-brand-positive-a25
brand.positiveA25
transparent
--cnvs-brand-positive-a50
brand.positiveA50
transparent
action
Swatch
CSS Variable
JS Variable
Value
--cnvs-brand-action-base
brand.action.base
transparent
--cnvs-brand-action-lightest
brand.action.lightest
transparent
--cnvs-brand-action-light
brand.action.light
transparent
--cnvs-brand-action-darkest
brand.action.darkest
transparent
--cnvs-brand-action-dark
brand.action.dark
transparent
--cnvs-brand-action-accent
brand.action.accent
transparent
--cnvs-brand-action-darker
brand.action.darker
transparent
--cnvs-brand-action-lighter
brand.action.lighter
transparent
gradient
Swatch
CSS Variable
JS Variable
Value
--cnvs-brand-gradient-primary
brand.gradient.primary
transparent
common
Swatch
CSS Variable
JS Variable
Value
--cnvs-brand-common-focus
brand.common.focus
transparent
--cnvs-brand-common-critical
brand.common.critical
transparent
--cnvs-brand-common-caution-inner
brand.common.caution.inner
transparent
--cnvs-brand-common-caution-outer
brand.common.caution.outer
transparent
System Color Tokens
System tokens are themed variables intended to provide application-wide theming. They are not
connected to Brand tokens, which are tenant-specific theming.
Colors with the prefix bg are page-level background colors. Use bg/default for most pages. Use bg/alt to emphasize primary content containers, such as cards.
Surfaces are visual containers that hold content that sit on top of the page or other surfaces. Use surface colors on cards, modals, panels, dropdowns, sheets, etc.
Surface colors may be nested within each other to create a visual hierarchy. When nesting surfaces, alternate between the default and alt surface colors.
Use surface/alt to suppress less important content and draw attention to primary surfaces. Muted surfaces visually recede, pushing focus towards main content while still creating a clear boundary without the use of shadows or colors.
Accent
Accent colors are high-emphasis background colors used to draw attention to main actions and statuses.
Use accent colors sparingly, on main areas of interest.
Don’t
Don’t use accent colors for general container backgrounds. Use surface/ tokens instead.
Don’t use accent colors on alternative page or surface colors (bg/alt, surface/alt) even if they pass accessibility requirements.
Don’t use accent colors for page backgrounds or large surface areas.
Interaction
State layers are overlays placed between or in front of background and foreground during user interaction. surface and accent colors use different tokens to create this effect (surfaces are lighter, accents are darker).
Use surface/overlay/(hover/pressed) for neutral surface colors.
Use accent/overlay/(hover/pressed) for accent colors.
Don’t
Don’t use surface/overlay/(hover/pressed) on accent colors.
Don’t use accent/overlay/(hover/pressed) on surface colors.
Avoid using overlay colors non non-neutral surfaces.
Do
Foreground
Use foreground colors (or fg) to set the color of text and icons.
All fg colors except fg/inverse can be used on surface/default, bg/default, surface/alt, and bg/alt.
Match fg colors to the modifier of their background or surface color. bg/default and surface/default use fg/default. surface/primary uses fg/primary. surface/primary/strong uses fg/primary/strong.
Use fg/inverse on accent backgrounds (with the exception of accent/warning and accent/caution).
Use fg/contrast on accent/warning and accent/caution instead of fg/inverse.
Status colors include danger, success, and warning. These colors are not brandable. Use these to denote the status of an object, task, or flow. If you’re interested in displaying the status of something, check out the
Status Indicator component.
Use bg for page backgrounds. Use one bg color per view, unless designing a split view.
Use surface for containers like cards, modals, and panels.
Use accent for high-emphasis actions like primary buttons and status indicators.
Use fg for text and icons. Match fg colors to their background or surface modifier.
Use border for edges, dividers, and input field boundaries.
Use shadow for depth and elevation. Always combine shadow/base and shadow/ambient together.
Use focus for keyboard focus indicators on all interactive elements.
Use system color tokens, not base colors or raw values.
Use defined contrast pairs to guarantee accessibility.
Web Examples
Canvas Tokens can be consumed as either JavaScript variables or as CSS variables and class names.
The JavaScript token values reference CSS variable names, so if you’re using JS tokens, you’ll also
need to import the CSS variables in your application.
Javascript / Typescript
// styles.tsimport {system} from '@workday/canvas-tokens-web';const styles = { backgroundColor: `var(${system.color.bg.default})`,};
Check out our FAQ section which may help you find the information you're looking for. For further information, contact the #ask-canvas-design or #ask-canvas-kitchannels on Slack.