Colors
Our color system provides a comprehensive palette for creating consistent, accessible interfaces with brand recognition and clear visual hierarchy.
Overview
The color system is built on two layers: primitive colors (raw color values) and semantic colors (contextual mappings). Components should always use semantic tokens to ensure consistency and theme support.
Brand Colors
Our brand palette features two distinctive colors: Moonstone (teal) as the primary brand color, and Wisteria (purple) as an accent.
Moonstone
Primary brand color used for interactive elements and brand identification.
Wisteria
Secondary brand color used for accents and alternative interactive states.
Neutral Colors
Neutral colors form the foundation of our UI, used for text, backgrounds, borders, and other structural elements.
Mauve
Warm neutral scale used for text, borders, and subtle backgrounds.
Light Scale
Light mode backgrounds and surfaces.
Dark Scale
Dark mode backgrounds and text colors.
System Colors
System colors communicate status and feedback: success, warning, and error states.
Green (Success)
Used for success states, confirmations, and positive actions.
Red (Danger)
Used for errors, destructive actions, and critical warnings.
Yellow (Warning)
Used for warnings, caution states, and important notices.
Semantic Colors
Semantic colors provide contextual meaning and should be used in components instead of primitive colors. They are organized by their purpose: foreground, background, and border.
Foreground
Used for text, icons, and other content elements.
--foreground-base Primary text color --foreground-muted Secondary text color --foreground-subtle Tertiary text color --foreground-disabled Disabled text color --foreground-interactive-primary Primary interactive elements --foreground-interactive-primaryAlt Alternative interactive color --foreground-system-success Success state text --foreground-system-warning Warning state text --foreground-system-danger Error state text Background
Used for surfaces, containers, and interactive element backgrounds.
--background-base Page background --background-surface Card/panel surfaces --background-raised Elevated surfaces --background-sunken Recessed surfaces --background-interactive-primary Primary button background --background-interactive-primaryAlt Alternative button background --background-system-success Success state background --background-system-warning Warning state background --background-system-danger Error state background Border
Used for borders, dividers, and outlines.
--border-default Default border color --border-brand-primary Primary brand border --border-brand-primaryAlt Alternative brand border --border-system-success Success state border --border-system-warning Warning state border --border-system-danger Error state border Usage
Always prefer semantic tokens over primitive colors in your component styles.
Do: Use Semantic Tokens
.button {
background: var(--background-interactive-primary);
color: var(--foreground-interactive-white);
border: 1px solid var(--border-brand-primary);
}
.alert-success {
background: var(--background-system-success);
color: var(--foreground-system-success);
border-color: var(--border-system-success);
} Don't: Use Primitive Colors Directly
/* Avoid this */
.button {
background: var(--color-moonstone-500);
color: white;
}