Table of contents
Note: For the following graphic the number shown in each color swatch is the calculated contrast against our background
color token.
Introduction to Our Color Palette
Our color palette is designed to cater to the diverse needs of our product's design requirements, providing a comprehensive range of colors.
Recommended Usage
While our palette offers a variety of colors suitable for a wide array of applications within our product, we strongly recommend using our theme tokens. These tokens are specifically designed to ensure that colors are applied with the correct intention and assignment, particularly in contexts where light and dark themes are utilized.
How to Reference Color Tokens
Color tokens can be referenced by combining their color group and scale. This system allows for easy identification and application of color values within your projects. For example:
gray100
red300
teal600
To ensure clarity in code documentation for maintaining type safety and consistent theme usage, especially when referencing colors from the Washington Post Design System (WPDS) in your styled components or any other part of your application, follow the structured approach below. This approach involves importing the theme object from the WPDS UI kit and then using dot notation to access specific color values.
Using our tokens in code
When you need to apply colors from the WPDS theme to your components, start by importing the theme object from the WPDS UI kit package. This enables you to use the theme's predefined color values in a type-safe manner, ensuring consistency across your application and adherence to the design system. For example:
import { theme } from "@washingtonpost/wpds-ui-kit";
const background= theme.colors.background;
Theme and Semantic Tokens
Our theme tokens are constructed in a semantic predicatble structure. Each token uses the semantic structure of role
- modifier
- state
.
- Role - Its purpose within the ui.
- Modifier (Optional) - A variant, change, or subset of the role. (-static*, -subtle*)
- State (Optional) - Its state within the ui.
When a -static
modifier is used the token will remain the same color in a dark context.
When a -subtle
modifer is used the token will use the most accessbile subtle color for that theme group.
Color tokens
Name | Preview | RGBA | HEX | Description |
---|---|---|---|---|
alpha0 | rgba(0, 0, 0, .65) | - | ||
alpha20 | rgba(0, 0, 0, .45) | - | ||
alpha40 | rgba(0, 0, 0, .40) | - | ||
alpha60 | rgba(0, 0, 0, .35) | - | ||
alpha80 | rgba(0, 0, 0, .30) | - | ||
alpha100 | rgba(0, 0, 0, .25) | - | ||
alpha200 | rgba(0, 0, 0, .20) | - | ||
alpha300 | rgba(0, 0, 0, .15) | - | ||
alpha400 | rgba(0, 0, 0, .10) | - | ||
alpha500 | rgba(0, 0, 0, .05) | - | ||
alpha50 | rgba(0, 0, 0, .50) | Legacy-Token subject to be deprecated use our new alpha tokens | ||
alpha25 | rgba(0, 0, 0, .05) | Legacy-Token subject to be deprecated use our new alpha tokens | ||
mustard600 | rgba(251, 241, 221, 1) | - | ||
mustard500 | rgba(254, 227, 156, 1) | - | ||
mustard400 | rgba(247, 202, 111, 1) | - | ||
mustard300 | rgba(235, 179, 71, 1) | - | ||
mustard200 | rgba(217, 158, 32, 1) | - | ||
mustard100 | rgba(226, 163, 31, 1) | - | ||
mustard80 | rgba(193, 139, 0, 1) | - | ||
mustard60 | rgba(145, 104, 2, 1) | - | ||
mustard40 | rgba(100, 72, 1, 1) | - | ||
yellow600 | rgba(253, 250, 219, 1) | - | ||
yellow100 | rgba(255, 236, 68, 1) | - | ||
gold600 | rgba(250, 240, 227, 1) | - | ||
gold500 | rgba(243, 228, 205, 1) | - | ||
gold400 | rgba(232, 203, 164, 1) | - | ||
gold300 | rgba(222, 181, 126, 1) | - | ||
gold200 | rgba(211, 158, 76, 1) | - | ||
gold100 | rgba(229, 160, 56, 1) | - | ||
gold80 | rgba(194, 136, 47, 1) | - | ||
gold60 | rgba(158, 97, 5, 1) | - | ||
gold40 | rgba(109, 69, 8, 1) | - | ||
green600 | rgba(238, 249, 234, 1) | - | ||
green500 | rgba(213, 237, 202, 1) | - | ||
green400 | rgba(178, 214, 160, 1) | - | ||
green300 | rgba(145, 192, 120, 1) | - | ||
green200 | rgba(110, 169, 81, 1) | - | ||
green100 | rgba(54, 167, 92, 1) | - | ||
green80 | rgba(73, 147, 39, 1) | - | ||
green60 | rgba(56, 113, 30, 1) | - | ||
green40 | rgba(40, 81, 21, 1) | - | ||
orange600 | rgba(255, 239, 224, 1) | - | ||
orange500 | rgba(251, 225, 195, 1) | - | ||
orange400 | rgba(249, 194, 150, 1) | - | ||
orange300 | rgba(241, 162, 106, 1) | - | ||
orange200 | rgba(230, 130, 61, 1) | - | ||
orange100 | rgba(243, 117, 14, 1) | - | ||
orange80 | rgba(216, 97, 0, 1) | - | ||
orange60 | rgba(166, 74, 0, 1) | - | ||
orange40 | rgba(118, 53, 2, 1) | - | ||
teal600 | rgba(234, 251, 254, 1) | - | ||
teal500 | rgba(199, 234, 239, 1) | - | ||
teal400 | rgba(159, 203, 211, 1) | - | ||
teal300 | rgba(118, 172, 182, 1) | - | ||
teal200 | rgba(74, 142, 155, 1) | - | ||
teal100 | rgba(3, 175, 202, 1) | - | ||
teal80 | rgba(15, 113, 128, 1) | - | ||
teal60 | rgba(15, 84, 95, 1) | - | ||
teal40 | rgba(11, 57, 64, 1) | - | ||
purple600 | rgba(250, 238, 249, 1) | - | ||
purple500 | rgba(248, 221, 244, 1) | - | ||
purple400 | rgba(234, 179, 223, 1) | - | ||
purple300 | rgba(217, 137, 201, 1) | - | ||
purple200 | rgba(201, 92, 182, 1) | - | ||
purple100 | rgba(209, 56, 191, 1) | - | ||
purple80 | rgba(182, 35, 161, 1) | - | ||
purple60 | rgba(136, 27, 121, 1) | - | ||
purple40 | rgba(93, 18, 84, 1) | - | ||
pink600 | rgba(252, 233, 239, 1) | - | ||
pink500 | rgba(249, 222, 231, 1) | - | ||
pink400 | rgba(239, 180, 191, 1) | - | ||
pink300 | rgba(228, 138, 155, 1) | - | ||
pink200 | rgba(213, 94, 119, 1) | - | ||
pink100 | rgba(255, 79, 131, 1) | - | ||
pink80 | rgba(195, 39, 85, 1) | - | ||
pink60 | rgba(149, 25, 64, 1) | - | ||
pink40 | rgba(105, 11, 44, 1) | - | ||
red600 | rgba(253, 231, 231, 1) | - | ||
red500 | rgba(249, 221, 219, 1) | - | ||
red400 | rgba(242, 180, 171, 1) | - | ||
red300 | rgba(229, 138, 124, 1) | - | ||
red200 | rgba(211, 95, 79, 1) | - | ||
red100 | rgba(234, 0, 23, 1) | - | ||
red80 | rgba(190, 44, 37, 1) | - | ||
red60 | rgba(142, 31, 27, 1) | - | ||
red40 | rgba(99, 16, 14, 1) | - | ||
blue600 | rgba(231, 240, 254, 1) | - | ||
blue500 | rgba(211, 231, 250, 1) | - | ||
blue400 | rgba(172, 197, 231, 1) | - | ||
blue300 | rgba(132, 164, 214, 1) | - | ||
blue200 | rgba(87, 132, 197, 1) | - | ||
blue100 | rgba(22, 109, 252, 1) | - | ||
blue80 | rgba(19, 102, 179, 1) | - | ||
blue60 | rgba(15, 75, 132, 1) | - | ||
blue40 | rgba(10, 50, 88, 1) | - | ||
gray700 | rgba(255, 255, 255, 1) | - | ||
gray600 | rgba(247, 247, 247, 1) | - | ||
gray500 | rgba(240, 240, 240, 1) | - | ||
gray400 | rgba(233, 233, 233, 1) | - | ||
gray300 | rgba(212, 212, 212, 1) | - | ||
gray200 | rgba(170, 170, 170, 1) | - | ||
gray100 | rgba(115, 115, 115, 1) | - | ||
gray80 | rgba(89, 89, 89, 1) | Previously #66666 updated to aim for AAA contrast on target background | ||
gray60 | rgba(73, 73, 73, 1) | - | ||
gray40 | rgba(42, 42, 42, 1) | - | ||
gray20 | rgba(17, 17, 17, 1) | - | ||
gray0 | rgba(0, 0, 0, 1) | - | ||
alpha0-static | rgba(0, 0, 0, .65) | - | ||
alpha20-static | rgba(0, 0, 0, .45) | - | ||
alpha40-static | rgba(0, 0, 0, .40) | - | ||
alpha60-static | rgba(0, 0, 0, .35) | - | ||
alpha80-static | rgba(0, 0, 0, .30) | - | ||
alpha100-static | rgba(0, 0, 0, .25) | - | ||
alpha200-static | rgba(0, 0, 0, .20) | - | ||
alpha300-static | rgba(0, 0, 0, .15) | - | ||
alpha400-static | rgba(0, 0, 0, .10) | - | ||
alpha500-static | rgba(0, 0, 0, .05) | - | ||
alpha50-static | rgba(0, 0, 0, .50) | Legacy-Token subject to be deprecated use our new alpha tokens | ||
alpha25-static | rgba(0, 0, 0, .05) | Legacy-Token subject to be deprecated use our new alpha tokens | ||
mustard600-static | rgba(251, 241, 221, 1) | - | ||
mustard500-static | rgba(254, 227, 156, 1) | - | ||
mustard400-static | rgba(247, 202, 111, 1) | - | ||
mustard300-static | rgba(235, 179, 71, 1) | - | ||
mustard200-static | rgba(217, 158, 32, 1) | - | ||
mustard100-static | rgba(226, 163, 31, 1) | - | ||
mustard80-static | rgba(193, 139, 0, 1) | - | ||
mustard60-static | rgba(145, 104, 2, 1) | - | ||
mustard40-static | rgba(100, 72, 1, 1) | - | ||
yellow600-static | rgba(253, 250, 219, 1) | - | ||
yellow100-static | rgba(255, 236, 68, 1) | - | ||
gold600-static | rgba(250, 240, 227, 1) | - | ||
gold500-static | rgba(243, 228, 205, 1) | - | ||
gold400-static | rgba(232, 203, 164, 1) | - | ||
gold300-static | rgba(222, 181, 126, 1) | - | ||
gold200-static | rgba(211, 158, 76, 1) | - | ||
gold100-static | rgba(229, 160, 56, 1) | - | ||
gold80-static | rgba(194, 136, 47, 1) | - | ||
gold60-static | rgba(158, 97, 5, 1) | - | ||
gold40-static | rgba(109, 69, 8, 1) | - | ||
green600-static | rgba(238, 249, 234, 1) | - | ||
green500-static | rgba(213, 237, 202, 1) | - | ||
green400-static | rgba(178, 214, 160, 1) | - | ||
green300-static | rgba(145, 192, 120, 1) | - | ||
green200-static | rgba(110, 169, 81, 1) | - | ||
green100-static | rgba(54, 167, 92, 1) | - | ||
green80-static | rgba(73, 147, 39, 1) | - | ||
green60-static | rgba(56, 113, 30, 1) | - | ||
green40-static | rgba(40, 81, 21, 1) | - | ||
orange600-static | rgba(255, 239, 224, 1) | - | ||
orange500-static | rgba(251, 225, 195, 1) | - | ||
orange400-static | rgba(249, 194, 150, 1) | - | ||
orange300-static | rgba(241, 162, 106, 1) | - | ||
orange200-static | rgba(230, 130, 61, 1) | - | ||
orange100-static | rgba(243, 117, 14, 1) | - | ||
orange80-static | rgba(216, 97, 0, 1) | - | ||
orange60-static | rgba(166, 74, 0, 1) | - | ||
orange40-static | rgba(118, 53, 2, 1) | - | ||
teal600-static | rgba(234, 251, 254, 1) | - | ||
teal500-static | rgba(199, 234, 239, 1) | - | ||
teal400-static | rgba(159, 203, 211, 1) | - | ||
teal300-static | rgba(118, 172, 182, 1) | - | ||
teal200-static | rgba(74, 142, 155, 1) | - | ||
teal100-static | rgba(3, 175, 202, 1) | - | ||
teal80-static | rgba(15, 113, 128, 1) | - | ||
teal60-static | rgba(15, 84, 95, 1) | - | ||
teal40-static | rgba(11, 57, 64, 1) | - | ||
purple600-static | rgba(250, 238, 249, 1) | - | ||
purple500-static | rgba(248, 221, 244, 1) | - | ||
purple400-static | rgba(234, 179, 223, 1) | - | ||
purple300-static | rgba(217, 137, 201, 1) | - | ||
purple200-static | rgba(201, 92, 182, 1) | - | ||
purple100-static | rgba(209, 56, 191, 1) | - | ||
purple80-static | rgba(182, 35, 161, 1) | - | ||
purple60-static | rgba(136, 27, 121, 1) | - | ||
purple40-static | rgba(93, 18, 84, 1) | - | ||
pink600-static | rgba(252, 233, 239, 1) | - | ||
pink500-static | rgba(249, 222, 231, 1) | - | ||
pink400-static | rgba(239, 180, 191, 1) | - | ||
pink300-static | rgba(228, 138, 155, 1) | - | ||
pink200-static | rgba(213, 94, 119, 1) | - | ||
pink100-static | rgba(255, 79, 131, 1) | - | ||
pink80-static | rgba(195, 39, 85, 1) | - | ||
pink60-static | rgba(149, 25, 64, 1) | - | ||
pink40-static | rgba(105, 11, 44, 1) | - | ||
red600-static | rgba(253, 231, 231, 1) | - | ||
red500-static | rgba(249, 221, 219, 1) | - | ||
red400-static | rgba(242, 180, 171, 1) | - | ||
red300-static | rgba(229, 138, 124, 1) | - | ||
red200-static | rgba(211, 95, 79, 1) | - | ||
red100-static | rgba(234, 0, 23, 1) | - | ||
red80-static | rgba(190, 44, 37, 1) | - | ||
red60-static | rgba(142, 31, 27, 1) | - | ||
red40-static | rgba(99, 16, 14, 1) | - | ||
blue600-static | rgba(231, 240, 254, 1) | - | ||
blue500-static | rgba(211, 231, 250, 1) | - | ||
blue400-static | rgba(172, 197, 231, 1) | - | ||
blue300-static | rgba(132, 164, 214, 1) | - | ||
blue200-static | rgba(87, 132, 197, 1) | - | ||
blue100-static | rgba(22, 109, 252, 1) | - | ||
blue80-static | rgba(19, 102, 179, 1) | - | ||
blue60-static | rgba(15, 75, 132, 1) | - | ||
blue40-static | rgba(10, 50, 88, 1) | - | ||
gray700-static | rgba(255, 255, 255, 1) | - | ||
gray600-static | rgba(247, 247, 247, 1) | - | ||
gray500-static | rgba(240, 240, 240, 1) | - | ||
gray400-static | rgba(233, 233, 233, 1) | - | ||
gray300-static | rgba(212, 212, 212, 1) | - | ||
gray200-static | rgba(170, 170, 170, 1) | - | ||
gray100-static | rgba(115, 115, 115, 1) | - | ||
gray80-static | rgba(89, 89, 89, 1) | Previously #66666 updated to aim for AAA contrast on target background | ||
gray60-static | rgba(73, 73, 73, 1) | - | ||
gray40-static | rgba(42, 42, 42, 1) | - | ||
gray20-static | rgba(17, 17, 17, 1) | - | ||
gray0-static | rgba(0, 0, 0, 1) | - | ||
errorContainer | rgba(253, 231, 231, 1) | - | ||
error | rgba(211, 95, 79, 1) | - | ||
warningContainer | rgba(255, 239, 224, 1) | - | ||
warning | rgba(230, 130, 61, 1) | - | ||
successContainer | rgba(238, 249, 234, 1) | - | ||
success | rgba(73, 147, 39, 1) | - | ||
signalContainer | rgba(231, 240, 254, 1) | - | ||
signal | rgba(87, 132, 197, 1) | - | ||
onMessage-subtle-hover | rgba(89, 89, 89, 1) | - | ||
onMessage-subtle | rgba(73, 73, 73, 1) | - | ||
onMessage-hover | rgba(89, 89, 89, 1) | - | ||
onMessage | rgba(17, 17, 17, 1) | - | ||
portal | rgba(255, 255, 255, 1) | - | ||
onPortal-subtle-hover | rgba(115, 115, 115, 1) | - | ||
onPortal-subtle | rgba(89, 89, 89, 1) | - | ||
onPortal-hover | rgba(115, 115, 115, 1) | - | ||
onPortal | rgba(17, 17, 17, 1) | - | ||
onSurface-subtle-hover | rgba(115, 115, 115, 1) | - | ||
onSurface-subtle | rgba(89, 89, 89, 1) | - | ||
onSurface-hover | rgba(115, 115, 115, 1) | - | ||
onSurface | rgba(17, 17, 17, 1) | - | ||
surface-highest | rgba(255, 255, 255, 1) | - | ||
surface | rgba(255, 255, 255, 1) | - | ||
onBackground-subtle-hover | rgba(115, 115, 115, 1) | - | ||
onBackground-subtle | rgba(89, 89, 89, 1) | - | ||
onBackground-hover | rgba(115, 115, 115, 1) | - | ||
onBackground | rgba(17, 17, 17, 1) | - | ||
background-forCards | rgba(247, 247, 247, 1) | - | ||
background | rgba(255, 255, 255, 1) | - | ||
accessible | rgba(89, 89, 89, 1) | Legacy-Token subject to be deprecated use the appropriate -subtle token | ||
outline-subtle | rgba(0, 0, 0, .05) | - | ||
outline | rgba(0, 0, 0, .10) | - | ||
subtle | rgba(212, 212, 212, 1) | Legacy-Token subject to be deprecated use the outline token | ||
faint | rgba(233, 233, 233, 1) | Legacy-Token subject to be deprecated use the outline token | ||
onDisabled | rgba(0, 0, 0, .30) | - | ||
disabled | rgba(0, 0, 0, .05) | - | ||
onCtaContainer-subtle-hover | rgba(89, 89, 89, 1) | - | ||
onCtaContainer-subtle | rgba(73, 73, 73, 1) | - | ||
onCtaContainer-hover | rgba(89, 89, 89, 1) | - | ||
onCtaContainer | rgba(17, 17, 17, 1) | - | ||
ctaContainer | rgba(231, 240, 254, 1) | - | ||
onCta-hover | - | |||
onCta | - | |||
cta-hover | rgba(19, 102, 179, 1) | - | ||
cta | rgba(22, 109, 252, 1) | - | ||
onSecondary-subtle-hover | rgba(115, 115, 115, 1) | - | ||
onSecondary-subtle | rgba(89, 89, 89, 1) | - | ||
onSecondary-hover | rgba(115, 115, 115, 1) | - | ||
onSecondary | rgba(17, 17, 17, 1) | - | ||
secondary-hover | rgba(240, 240, 240, 1) | - | ||
secondary | rgba(255, 255, 255, 1) | - | ||
onPrimary-subtle-hover | rgba(170, 170, 170, 1) | - | ||
onPrimary-subtle | rgba(212, 212, 212, 1) | - | ||
onPrimary-hover | rgba(170, 170, 170, 1) | - | ||
onPrimary | rgba(255, 255, 255, 1) | - | ||
primary-hover | rgba(42, 42, 42, 1) | - | ||
primary | rgba(17, 17, 17, 1) | - |