Color

Semantic color tokens for surfaces, text, icons, borders, and status indicators.

Overview #

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 Colors #

Layered surface hierarchy: body → surface → card → popover. Each level sits visually above the previous one.

Semantic colors for consistent theming. All colors use light-dark() for automatic mode switching.

TokenValue
--color-accent
#0064E0 / #2694FE
--color-accent-muted
#0082FB33 / #0082FB3F
--color-on-accent
#FFFFFF
--color-neutral
rgba(5, 54, 89, 0.1) / rgba(223, 226, 229, 0.2)
--color-background-surface
#FFFFFF / #1F1F22
--color-background-body
#F1F4F7 / #111112
--color-overlay
#01122866 / #11111299
--color-overlay-hover
#0536590C / #FFFFFF0C
--color-overlay-pressed
#05365919 / #FFFFFF19
--color-background-muted
#0536590C / #1111127F
--color-text-primary
#0A1317 / #DFE2E5
--color-text-secondary
#4E606F / #AAAFB5
--color-text-disabled
#A4B0BC / #6F747C
--color-text-accent
#0064E0 / #3E9EFB
--color-on-dark
#FFFFFF
--color-on-light
#000000
--color-icon-accent
#0064E0 / #2694FE
--color-icon-primary
#0A1317 / #DFE2E5
--color-icon-secondary
#4E606F / #AAAFB5
--color-icon-disabled
#A4B0BC / #6F747C
--color-background-card
#FFFFFF / #1F1F22
--color-background-popover
#FFFFFF / #28292C
--color-background-inverted
#0A1317 / #FFFFFF
--color-background-error-inverted
#AA071E / #E3193B
--color-success
#0D8626
--color-success-muted
#0B991F33 / #0B991F3F
--color-on-success
#FFFFFF
--color-error
#E3193B / #F5394F
--color-error-muted
#E3193B33 / #F5394F3F
--color-on-error
#FFFFFF
--color-warning
#E9AF08 / #F2C00B
--color-warning-muted
#E2A40033 / #E2A4003F
--color-on-warning
#0A1317
--color-border
#05365919 / #F2F4F619
--color-border-emphasized
#CCD3DB / #494D53
--color-skeleton
#CCD3DB / #5A5E66
--color-track
#CCD3DB / #5A5E66
--color-shadow
rgba(5, 54, 89, 0.1) / rgba(0, 0, 0, 0.3)
--color-tint-hover
black / white
--color-background-blue
#0171E333
--color-border-blue
#0064E0 / #2694FE
--color-icon-blue
#0064E0 / #2694FE
--color-text-blue
#042F97 / #AFD7FF
--color-background-cyan
#03A7D733
--color-border-cyan
#089DD0 / #0171A4
--color-icon-cyan
#00ACC1 / #26C6DA
--color-text-cyan
#014975 / #A1EEF9
--color-background-gray
#0A131733 / #666A724C
--color-border-gray
#647685 / #748695
--color-icon-gray
#4E606F / #AAAFB5
--color-text-gray
#0A1317 / #E7EAED
--color-background-green
#24BB5E33
--color-border-green
#0D8626 / #0B991F
--color-icon-green
#0D8626 / #26A756
--color-text-green
#09441F / #A5F690
--color-background-orange
#F2790233
--color-border-orange
#EB6E00 / #B34A01
--color-icon-orange
#E9690B / #FB8C00
--color-text-orange
#6B2203 / #FDB876
--color-background-pink
#E638B333
--color-border-pink
#F351C0 / #C02294
--color-icon-pink
#C2185B / #EC407A
--color-text-pink
#650053 / #FEADE3
--color-background-purple
#7952FF33
--color-border-purple
#9081FF / #7340FE
--color-icon-purple
#5B08D8 / #7952FF
--color-text-purple
#3E0697 / #B3B0FE
--color-background-red
#E3193B33
--color-border-red
#E3193B / #F5394F
--color-icon-red
#D31130 / #E3193B
--color-text-red
#7B0210 / #FFB2B8
--color-background-teal
#0DB7AF33
--color-border-teal
#08A3A3 / #08767D
--color-icon-teal
#009688 / #26A69A
--color-text-teal
#083943 / #40DCCD
--color-background-yellow
#E2A40033
--color-border-yellow
#C58600 / #B47700
--color-icon-yellow
#FBC02D / #FFEE58
--color-text-yellow
#753F07 / #FBCE03

Full reference: Color Tokens.

Usage #

Applying color tokens (page.stylex.ts)
ts
import * as stylex from '@stylexjs/stylex';
export const styles = stylex.create({
container: {
backgroundColor: 'var(--color-background-surface)',
color: 'var(--color-text-primary)',
borderColor: 'var(--color-border)'
},
accent: {
color: 'var(--color-text-accent)'
}
});

Outside StyleX the same tokens work anywhere CSS does — a scoped <style> block, a global stylesheet, or an SVG fill. tokenVar('--color-text-accent') from @astryx-svelte/core/theme returns the same var(...) reference when a styling-library config needs it as a value.

Best Practices #

GuidancePractices
DoUse semantic tokens (--color-text-primary) instead of raw hex values.
DoRely on the surface hierarchy (body → surface → card → popover) for layering.
DoUse status colors (success, error, warning) only for their semantic meaning.
Don'tHardcode hex values, since they won't adapt to dark mode or custom themes.
Don'tMix accent colors with status colors in the same context.
Don'tUse --color-on-accent on non-accent backgrounds.