Colors

Overview of the color system and semantic color tokens in Apsara.

Apsara uses a semantic color system that provides meaningful, context-aware colors for your interface. Colors are organized by their purpose rather than their appearance, making it easy to maintain consistency and support theming.

Foreground Colors

Foreground colors are used for text, icons, and other content elements.

Base Foreground

TokenDescription
--rs-color-foreground-base-primaryPrimary text color for headings and important content
--rs-color-foreground-base-secondarySecondary text color for supporting content
--rs-color-foreground-base-tertiaryTertiary text color for muted or placeholder content
--rs-color-foreground-base-emphasisHigh contrast text for emphasis on colored backgrounds

Semantic Foreground

TokenDescription
--rs-color-foreground-accent-primaryAccent color for interactive elements and links
--rs-color-foreground-accent-primary-hoverHover state for accent foreground
--rs-color-foreground-accent-emphasisText on accent emphasis backgrounds
--rs-color-foreground-danger-primaryError and destructive action text
--rs-color-foreground-danger-primary-hoverHover state for danger foreground
--rs-color-foreground-danger-emphasisText on danger emphasis backgrounds
--rs-color-foreground-attention-primaryWarning and attention text
--rs-color-foreground-attention-primary-hoverHover state for attention foreground
--rs-color-foreground-attention-emphasisText on attention emphasis backgrounds
--rs-color-foreground-success-primarySuccess and positive action text
--rs-color-foreground-success-primary-hoverHover state for success foreground
--rs-color-foreground-success-emphasisText on success emphasis backgrounds

Background Colors

Background colors define surfaces and containers in your interface.

Base Background

TokenDescription
--rs-color-background-base-primaryPrimary background for main content areas
--rs-color-background-base-primary-hoverHover state for primary background
--rs-color-background-base-secondarySecondary background for cards and panels
--rs-color-background-neutral-primaryNeutral background for subtle elements
--rs-color-background-neutral-secondarySecondary neutral background
--rs-color-background-neutral-secondary-hoverHover state for secondary neutral background
--rs-color-background-neutral-tertiaryTertiary neutral background
--rs-color-background-neutral-tertiary-hoverHover state for tertiary neutral background
--rs-color-background-neutral-emphasisHigh contrast neutral background

Semantic Background

TokenDescription
--rs-color-background-accent-primarySubtle accent background for highlights
--rs-color-background-accent-emphasisStrong accent background for buttons and CTAs
--rs-color-background-accent-emphasis-hoverHover state for accent emphasis background
--rs-color-background-danger-primarySubtle danger background for error states
--rs-color-background-danger-emphasisStrong danger background for destructive actions
--rs-color-background-danger-emphasis-hoverHover state for danger emphasis background
--rs-color-background-attention-primarySubtle attention background for warnings
--rs-color-background-attention-emphasisStrong attention background
--rs-color-background-attention-emphasis-hoverHover state for attention emphasis background
--rs-color-background-success-primarySubtle success background for positive states
--rs-color-background-success-emphasisStrong success background
--rs-color-background-success-emphasis-hoverHover state for success emphasis background

Border Colors

Border colors define boundaries and separators.

TokenDescription
--rs-color-border-base-primaryPrimary border for subtle boundaries
--rs-color-border-base-secondarySecondary border for dividers
--rs-color-border-base-tertiaryTertiary border for inputs and cards
--rs-color-border-base-tertiary-hoverHover state for tertiary border
--rs-color-border-base-focusFocus ring for interactive elements
--rs-color-border-base-emphasisHigh contrast border for emphasis
--rs-color-border-accent-primaryAccent border for highlights
--rs-color-border-accent-emphasisStrong accent border
--rs-color-border-accent-emphasis-hoverHover state for accent emphasis border
--rs-color-border-danger-primaryDanger border for error states
--rs-color-border-danger-emphasisStrong danger border
--rs-color-border-danger-emphasis-hoverHover state for danger emphasis border
--rs-color-border-attention-primaryAttention border for warnings
--rs-color-border-attention-emphasisStrong attention border
--rs-color-border-attention-emphasis-hoverHover state for attention emphasis border
--rs-color-border-success-primarySuccess border for positive states
--rs-color-border-success-emphasisStrong success border
--rs-color-border-success-emphasis-hoverHover state for success emphasis border

Overlay Colors

Overlay colors are used for modals, tooltips, and layered elements.

TokenOpacity
--rs-color-overlay-base-primaryDefault overlay
--rs-color-overlay-black-a15%
--rs-color-overlay-black-a210%
--rs-color-overlay-black-a315%
--rs-color-overlay-black-a420%
--rs-color-overlay-black-a530%
--rs-color-overlay-black-a640%
--rs-color-overlay-black-a750%
--rs-color-overlay-black-a860%
--rs-color-overlay-black-a970%
--rs-color-overlay-black-a1080%
--rs-color-overlay-black-a1190%
--rs-color-overlay-black-a1295%
--rs-color-overlay-white-a15%
--rs-color-overlay-white-a210%
--rs-color-overlay-white-a315%
--rs-color-overlay-white-a420%
--rs-color-overlay-white-a530%
--rs-color-overlay-white-a640%
--rs-color-overlay-white-a750%
--rs-color-overlay-white-a860%
--rs-color-overlay-white-a970%
--rs-color-overlay-white-a1080%
--rs-color-overlay-white-a1190%
--rs-color-overlay-white-a1295%

Visualization Colors

A palette of colors designed for data visualization, charts, and graphs.

ColorTokens
Sky--rs-color-viz-sky-6, --rs-color-viz-sky-8, --rs-color-viz-sky-9, --rs-color-viz-sky-11
Mint--rs-color-viz-mint-6, --rs-color-viz-mint-8, --rs-color-viz-mint-9, --rs-color-viz-mint-11
Lime--rs-color-viz-lime-6, --rs-color-viz-lime-8, --rs-color-viz-lime-9, --rs-color-viz-lime-11
Grass--rs-color-viz-grass-6, --rs-color-viz-grass-8, --rs-color-viz-grass-9, --rs-color-viz-grass-11
Green--rs-color-viz-green-6, --rs-color-viz-green-8, --rs-color-viz-green-9, --rs-color-viz-green-11
Jade--rs-color-viz-jade-6, --rs-color-viz-jade-8, --rs-color-viz-jade-9, --rs-color-viz-jade-11
Cyan--rs-color-viz-cyan-6, --rs-color-viz-cyan-8, --rs-color-viz-cyan-9, --rs-color-viz-cyan-11
Blue--rs-color-viz-blue-6, --rs-color-viz-blue-8, --rs-color-viz-blue-9, --rs-color-viz-blue-11
Iris--rs-color-viz-iris-6, --rs-color-viz-iris-8, --rs-color-viz-iris-9, --rs-color-viz-iris-11
Purple--rs-color-viz-purple-6, --rs-color-viz-purple-8, --rs-color-viz-purple-9, --rs-color-viz-purple-11
Pink--rs-color-viz-pink-6, --rs-color-viz-pink-8, --rs-color-viz-pink-9, --rs-color-viz-pink-11
Crimson--rs-color-viz-crimson-6, --rs-color-viz-crimson-8, --rs-color-viz-crimson-9, --rs-color-viz-crimson-11
Orange--rs-color-viz-orange-6, --rs-color-viz-orange-8, --rs-color-viz-orange-9, --rs-color-viz-orange-11
Gold--rs-color-viz-gold-6, --rs-color-viz-gold-8, --rs-color-viz-gold-9, --rs-color-viz-gold-11

Usage

1/* Text colors */
2.heading {
3 color: var(--rs-color-foreground-base-primary);
4}
5
6.description {
7 color: var(--rs-color-foreground-base-secondary);
8}
9
10/* Background colors */
11.card {
12 background-color: var(--rs-color-background-base-secondary);
13}
14
15.button-primary {
16 background-color: var(--rs-color-background-accent-emphasis);
17 color: var(--rs-color-foreground-accent-emphasis);
18}
19
20/* Border colors */
21.input {
22 border: 1px solid var(--rs-color-border-base-tertiary);
23}
24
25.input:focus {
26 border-color: var(--rs-color-border-accent-emphasis);
27}
28
29/* Semantic states */
30.error {
31 color: var(--rs-color-foreground-danger-primary);
32 background-color: var(--rs-color-background-danger-primary);
33 border-color: var(--rs-color-border-danger-primary);
34}

Best Practices

  • Use semantic tokens - Prefer semantic color tokens over raw color values for consistency and theming support
  • Match foreground with background - Use corresponding foreground colors when placing text on semantic backgrounds (e.g., foreground-accent-emphasis on background-accent-emphasis)
  • Respect color hierarchy - Use primary colors for main content, secondary for supporting content, and tertiary for subtle elements
  • Test in both themes - Ensure your color choices work well in both light and dark modes