ColorSemantic color tokens for surfaces, text, icons, borders, and status indicators.
OverviewXDS colors are semantic — tokens describe purpose, not appearance. Every color adapts automatically between light and dark modes via CSS light-dark(). Themes override the resolved values, so your code never references raw hex colors.
Surface ColorsLayered surface hierarchy: body → surface → card → popover. Each level sits visually above the previous one.
| Token | Light | Dark |
|---|---|---|
| --color-accent | #0064E0 | #0064E0 |
| --color-accent-muted | #0082FB33 | #0082FB33 |
| --color-on-accent | #FFFFFF | #FFFFFF |
| --color-neutral | light-dark(rgba(5, 54, 89, 0.1), rgba(223, 226, 229, 0.2)) | light-dark(rgba(5, 54, 89, 0.1), rgba(223, 226, 229, 0.2)) |
| --color-background-surface | #FFFFFF | #FFFFFF |
| --color-background-body | #F1F4F7 | #F1F4F7 |
| --color-overlay | #01122866 | #01122866 |
| --color-overlay-hover | #0536590C | #0536590C |
| --color-overlay-pressed | #05365919 | #05365919 |
| --color-background-muted | #0536590C | #0536590C |
| --color-text-primary | #0A1317 | #0A1317 |
| --color-text-secondary | #4E606F | #4E606F |
| --color-text-disabled | #A4B0BC | #A4B0BC |
| --color-text-accent | #0064E0 | #0064E0 |
| --color-on-dark | #FFFFFF | #FFFFFF |
| --color-on-light | #000000 | #000000 |
| --color-icon-accent | #0064E0 | #0064E0 |
| --color-icon-primary | #0A1317 | #0A1317 |
| --color-icon-secondary | #4E606F | #4E606F |
| --color-icon-disabled | #A4B0BC | #A4B0BC |
| --color-background-card | #FFFFFF | #FFFFFF |
| --color-background-popover | #FFFFFF | #FFFFFF |
| --color-background-inverted | #0A1317 | #0A1317 |
| --color-background-error-inverted | #AA071E | #AA071E |
| --color-success | #0D8626 | #0D8626 |
| --color-success-muted | #0B991F33 | #0B991F33 |
| --color-on-success | #FFFFFF | #FFFFFF |
| --color-error | #E3193B | #E3193B |
| --color-error-muted | #E3193B33 | #E3193B33 |
| --color-on-error | #FFFFFF | #FFFFFF |
| --color-warning | #E9AF08 | #E9AF08 |
| --color-warning-muted | #E2A40033 | #E2A40033 |
| --color-on-warning | #0A1317 | #0A1317 |
| --color-border | #05365919 | #05365919 |
| --color-border-emphasized | #CCD3DB | #CCD3DB |
| --color-skeleton | #CCD3DB | #CCD3DB |
| --color-shadow | light-dark(rgba(5, 54, 89, 0.1), rgba(0, 0, 0, 0.3)) | light-dark(rgba(5, 54, 89, 0.1), rgba(0, 0, 0, 0.3)) |
| --color-tint-hover | black | black |
| --color-background-blue | #0171E333 | #0171E333 |
| --color-border-blue | #0064E0 | #0064E0 |
| --color-icon-blue | #0064E0 | #0064E0 |
| --color-text-blue | #042F97 | #042F97 |
| --color-background-cyan | #03A7D733 | #03A7D733 |
| --color-border-cyan | #089DD0 | #089DD0 |
| --color-icon-cyan | #00ACC1 | #00ACC1 |
| --color-text-cyan | #014975 | #014975 |
| --color-background-gray | #0A131733 | #0A131733 |
| --color-border-gray | #647685 | #647685 |
| --color-icon-gray | #4E606F | #4E606F |
| --color-text-gray | #0A1317 | #0A1317 |
| --color-background-green | #24BB5E33 | #24BB5E33 |
| --color-border-green | #0D8626 | #0D8626 |
| --color-icon-green | #0D8626 | #0D8626 |
| --color-text-green | #09441F | #09441F |
| --color-background-orange | #F2790233 | #F2790233 |
| --color-border-orange | #EB6E00 | #EB6E00 |
| --color-icon-orange | #E9690B | #E9690B |
| --color-text-orange | #6B2203 | #6B2203 |
| --color-background-pink | #E638B333 | #E638B333 |
| --color-border-pink | #F351C0 | #F351C0 |
| --color-icon-pink | #C2185B | #C2185B |
| --color-text-pink | #650053 | #650053 |
| --color-background-purple | #7952FF33 | #7952FF33 |
| --color-border-purple | #9081FF | #9081FF |
| --color-icon-purple | #5B08D8 | #5B08D8 |
| --color-text-purple | #3E0697 | #3E0697 |
| --color-background-red | #E3193B33 | #E3193B33 |
| --color-border-red | #E3193B | #E3193B |
| --color-icon-red | #D31130 | #D31130 |
| --color-text-red | #7B0210 | #7B0210 |
| --color-background-teal | #0DB7AF33 | #0DB7AF33 |
| --color-border-teal | #08A3A3 | #08A3A3 |
| --color-icon-teal | #009688 | #009688 |
| --color-text-teal | #083943 | #083943 |
| --color-background-yellow | #E2A40033 | #E2A40033 |
| --color-border-yellow | #C58600 | #C58600 |
| --color-icon-yellow | #FBC02D | #FBC02D |
| --color-text-yellow | #753F07 | #753F07 |
| --color-syntax-keyword | #cf222e | #cf222e |
| --color-syntax-string | #0a3069 | #0a3069 |
| --color-syntax-comment | #6e7781 | #6e7781 |
| --color-syntax-number | #0550ae | #0550ae |
| --color-syntax-function | #8250df | #8250df |
| --color-syntax-type | #953800 | #953800 |
| --color-syntax-variable | #24292f | #24292f |
| --color-syntax-operator | #cf222e | #cf222e |
| --color-syntax-constant | #0550ae | #0550ae |
| --color-syntax-tag | #116329 | #116329 |
| --color-syntax-attribute | #0550ae | #0550ae |
| --color-syntax-property | #0550ae | #0550ae |
| --color-syntax-punctuation | #24292f | #24292f |
| --color-syntax-background | #ffffff | #ffffff |
| --color-data-categorical-blue | #0171E3 | #0171E3 |
| --color-data-categorical-orange | #EB6E00 | #EB6E00 |
| --color-data-categorical-purple | #6B1EFD | #6B1EFD |
| --color-data-categorical-green | #0B991F | #0B991F |
| --color-data-categorical-pink | #F351C0 | #F351C0 |
| --color-data-categorical-cyan | #0171A4 | #0171A4 |
| --color-data-categorical-red | #F5394F | #F5394F |
| --color-data-categorical-teal | #08A3A3 | #08A3A3 |
| --color-data-categorical-brown | #965E03 | #965E03 |
| --color-data-categorical-indigo | #6F8AFF | #6F8AFF |
| --color-data-neutral | #8494A3 | #8494A3 |
| --color-data-blue-5 | #02165E | #02165E |
| --color-data-blue-4 | #004CBC | #004CBC |
| --color-data-blue-3 | #2694FE | #2694FE |
| --color-data-blue-2 | #78BEFF | #78BEFF |
| --color-data-blue-1 | #DBECFF | #DBECFF |
| --color-data-shamrock-5 | #0B603D | #0B603D |
| --color-data-shamrock-4 | #138546 | #138546 |
| --color-data-shamrock-3 | #24BB5E | #24BB5E |
| --color-data-shamrock-2 | #8EF7AA | #8EF7AA |
| --color-data-shamrock-1 | #D6FEE4 | #D6FEE4 |
| --color-data-orange-5 | #A13F04 | #A13F04 |
| --color-data-orange-4 | #D66100 | #D66100 |
| --color-data-orange-3 | #FD9537 | #FD9537 |
| --color-data-orange-2 | #FDB876 | #FDB876 |
| --color-data-orange-1 | #FFE6CF | #FFE6CF |
| --color-data-pink-5 | #8E1073 | #8E1073 |
| --color-data-pink-4 | #D123A1 | #D123A1 |
| --color-data-pink-3 | #F989D3 | #F989D3 |
| --color-data-pink-2 | #FEADE3 | #FEADE3 |
| --color-data-pink-1 | #FCE3F4 | #FCE3F4 |
| --color-data-purple-5 | #3E0697 | #3E0697 |
| --color-data-purple-4 | #6B1EFD | #6B1EFD |
| --color-data-purple-3 | #9081FF | #9081FF |
| --color-data-purple-2 | #B3B0FE | #B3B0FE |
| --color-data-purple-1 | #E8E8FB | #E8E8FB |
| --color-data-red-5 | #9D0519 | #9D0519 |
| --color-data-red-4 | #D31130 | #D31130 |
| --color-data-red-3 | #FB7D87 | #FB7D87 |
| --color-data-red-2 | #FFB2B8 | #FFB2B8 |
| --color-data-red-1 | #FEE4E6 | #FEE4E6 |
| --color-data-teal-5 | #08767D | #08767D |
| --color-data-teal-4 | #0C9293 | #0C9293 |
| --color-data-teal-3 | #0DB7AF | #0DB7AF |
| --color-data-teal-2 | #6CE6D8 | #6CE6D8 |
| --color-data-teal-1 | #D7FCF8 | #D7FCF8 |
| --color-data-yellow-5 | #8A5001 | #8A5001 |
| --color-data-yellow-4 | #D69804 | #D69804 |
| --color-data-yellow-3 | #FBCE03 | #FBCE03 |
| --color-data-yellow-2 | #FCEC85 | #FCEC85 |
| --color-data-yellow-1 | #FDF6BA | #FDF6BA |
| --color-data-gray-5 | #25363F | #25363F |
| --color-data-gray-4 | #5D6C7B | #5D6C7B |
| --color-data-gray-3 | #AFB9C4 | #AFB9C4 |
| --color-data-gray-2 | #CCD3DB | #CCD3DB |
| --color-data-gray-1 | #F1F4F7 | #F1F4F7 |
Usage
Applying color tokens
tsximport * as stylex from '@stylexjs/stylex';import {colorVars} from '@xds/core/theme/tokens.stylex';const styles = stylex.create({container: {backgroundColor: colorVars['--color-background-surface'],color: colorVars['--color-text-primary'],borderColor: colorVars['--color-border'],},accent: {color: colorVars['--color-text-accent'],},});
Best Practices
| Guidance | Practices |
|---|---|
| Do | Use semantic tokens (--color-text-primary) instead of raw hex values. |
| Do | Rely on the surface hierarchy (body → surface → card → popover) for layering. |
| Do | Use status colors (success, error, warning) only for their semantic meaning. |
| Don't | Hardcode hex values — they won't adapt to dark mode or custom themes. |
| Don't | Mix accent colors with status colors in the same context. |
| Don't | Use --color-on-accent on non-accent backgrounds. |