Documentation Index
Fetch the complete documentation index at: https://mintlify.com/raystack/apsara/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Apsara provides a comprehensive color system built on CSS custom properties. The color system includes semantic colors for UI components, primitive color scales, and specialized visualization colors for charts and data displays.
Semantic colors
Semantic colors are designed for common UI patterns and automatically adapt to the selected theme.
Foreground colors
Text and icon colors with semantic meaning:
/* Base foreground colors */
--rs-color-foreground-base-primary /* Primary text */
--rs-color-foreground-base-secondary /* Secondary text */
--rs-color-foreground-base-tertiary /* Tertiary text */
--rs-color-foreground-base-emphasis /* Emphasized text */
/* Semantic foreground colors */
--rs-color-foreground-accent-primary /* Accent color text */
--rs-color-foreground-attention-primary /* Warning text */
--rs-color-foreground-danger-primary /* Error text */
--rs-color-foreground-success-primary /* Success text */
/* Emphasis foreground colors */
--rs-color-foreground-accent-emphasis
--rs-color-foreground-danger-emphasis
--rs-color-foreground-attention-emphasis
--rs-color-foreground-success-emphasis
Background colors
Background colors for various UI states:
/* Base backgrounds */
--rs-color-background-base-primary
--rs-color-background-base-secondary
--rs-color-background-neutral-primary
--rs-color-background-neutral-secondary
--rs-color-background-neutral-tertiary
/* Semantic backgrounds */
--rs-color-background-accent-primary
--rs-color-background-attention-primary
--rs-color-background-danger-primary
--rs-color-background-success-primary
/* Emphasis backgrounds */
--rs-color-background-accent-emphasis
--rs-color-background-attention-emphasis
--rs-color-background-danger-emphasis
--rs-color-background-success-emphasis
--rs-color-background-neutral-emphasis
/* Hover states */
--rs-color-background-base-primary-hover
--rs-color-background-neutral-secondary-hover
--rs-color-background-neutral-tertiary-hover
--rs-color-background-accent-emphasis-hover
--rs-color-background-attention-emphasis-hover
--rs-color-background-danger-emphasis-hover
--rs-color-background-success-emphasis-hover
Border colors
Border colors for various UI elements:
/* Base borders */
--rs-color-border-base-primary
--rs-color-border-base-secondary
--rs-color-border-base-tertiary
--rs-color-border-base-focus
--rs-color-border-base-emphasis
/* Semantic borders */
--rs-color-border-accent-primary
--rs-color-border-attention-primary
--rs-color-border-danger-primary
--rs-color-border-success-primary
/* Emphasis borders */
--rs-color-border-accent-emphasis
--rs-color-border-attention-emphasis
--rs-color-border-danger-emphasis
--rs-color-border-success-emphasis
/* Hover states */
--rs-color-border-base-tertiary-hover
--rs-color-border-accent-emphasis-hover
--rs-color-border-attention-emphasis-hover
--rs-color-border-danger-emphasis-hover
--rs-color-border-success-emphasis-hover
Overlay colors
Transparent overlay colors for creating depth and focus:
Black overlays
--rs-color-overlay-black-a1 /* 5% opacity */
--rs-color-overlay-black-a2 /* 10% opacity */
--rs-color-overlay-black-a3 /* 15% opacity */
--rs-color-overlay-black-a4 /* 20% opacity */
--rs-color-overlay-black-a5 /* 30% opacity */
--rs-color-overlay-black-a6 /* 40% opacity */
--rs-color-overlay-black-a7 /* 50% opacity */
--rs-color-overlay-black-a8 /* 60% opacity */
--rs-color-overlay-black-a9 /* 70% opacity */
--rs-color-overlay-black-a10 /* 80% opacity */
--rs-color-overlay-black-a11 /* 90% opacity */
--rs-color-overlay-black-a12 /* 95% opacity */
White overlays
--rs-color-overlay-white-a1 /* 5% opacity */
--rs-color-overlay-white-a2 /* 10% opacity */
--rs-color-overlay-white-a3 /* 15% opacity */
--rs-color-overlay-white-a4 /* 20% opacity */
--rs-color-overlay-white-a5 /* 30% opacity */
--rs-color-overlay-white-a6 /* 40% opacity */
--rs-color-overlay-white-a7 /* 50% opacity */
--rs-color-overlay-white-a8 /* 60% opacity */
--rs-color-overlay-white-a9 /* 70% opacity */
--rs-color-overlay-white-a10 /* 80% opacity */
--rs-color-overlay-white-a11 /* 90% opacity */
--rs-color-overlay-white-a12 /* 95% opacity */
Visualization colors
Specialized color palettes for charts, graphs, and data visualization:
Available color scales
Each visualization color comes in 4 shades (6, 8, 9, 11) for different use cases:
- Sky:
--rs-color-viz-sky-{6|8|9|11}
- Mint:
--rs-color-viz-mint-{6|8|9|11}
- Lime:
--rs-color-viz-lime-{6|8|9|11}
- Grass:
--rs-color-viz-grass-{6|8|9|11}
- Green:
--rs-color-viz-green-{6|8|9|11}
- Jade:
--rs-color-viz-jade-{6|8|9|11}
- Cyan:
--rs-color-viz-cyan-{6|8|9|11}
- Blue:
--rs-color-viz-blue-{6|8|9|11}
- Iris:
--rs-color-viz-iris-{6|8|9|11}
- Purple:
--rs-color-viz-purple-{6|8|9|11}
- Pink:
--rs-color-viz-pink-{6|8|9|11}
- Crimson:
--rs-color-viz-crimson-{6|8|9|11}
- Orange:
--rs-color-viz-orange-{6|8|9|11}
- Gold:
--rs-color-viz-gold-{6|8|9|11}
Shade usage guidelines
- Shade 6: Subtle backgrounds and fills
- Shade 8: Hover states and secondary emphasis
- Shade 9: Primary fills and chart colors
- Shade 11: High contrast text and borders
Usage examples
Semantic color usage
/* Success state */
.success-alert {
background: var(--rs-color-background-success-primary);
color: var(--rs-color-foreground-success-primary);
border: 1px solid var(--rs-color-border-success-primary);
}
/* Error state */
.error-alert {
background: var(--rs-color-background-danger-primary);
color: var(--rs-color-foreground-danger-primary);
border: 1px solid var(--rs-color-border-danger-primary);
}
/* Warning state */
.warning-alert {
background: var(--rs-color-background-attention-primary);
color: var(--rs-color-foreground-attention-primary);
border: 1px solid var(--rs-color-border-attention-primary);
}
Emphasis buttons
.primary-button {
background: var(--rs-color-background-accent-emphasis);
color: var(--rs-color-foreground-accent-emphasis);
border: 1px solid var(--rs-color-border-accent-emphasis);
}
.primary-button:hover {
background: var(--rs-color-background-accent-emphasis-hover);
border-color: var(--rs-color-border-accent-emphasis-hover);
}
.danger-button {
background: var(--rs-color-background-danger-emphasis);
color: var(--rs-color-foreground-danger-emphasis);
}
.danger-button:hover {
background: var(--rs-color-background-danger-emphasis-hover);
}
Overlay usage
/* Modal backdrop */
.modal-backdrop {
background: var(--rs-color-overlay-black-a7);
backdrop-filter: blur(4px);
}
/* Hover overlay */
.card:hover::after {
content: '';
position: absolute;
inset: 0;
background: var(--rs-color-overlay-white-a2);
}
/* Focus ring */
.input:focus {
box-shadow: 0 0 0 3px var(--rs-color-overlay-black-a3);
}
Visualization colors in charts
import { BarChart } from 'your-chart-library';
function SalesChart() {
return (
<BarChart
data={salesData}
colors={[
'var(--rs-color-viz-blue-9)',
'var(--rs-color-viz-green-9)',
'var(--rs-color-viz-purple-9)',
'var(--rs-color-viz-orange-9)'
]}
/>
);
}
Data visualization legend
.legend-item {
display: flex;
align-items: center;
gap: 8px;
}
.legend-color-box {
width: 16px;
height: 16px;
border-radius: 2px;
}
.legend-color-box.sales {
background: var(--rs-color-viz-blue-9);
}
.legend-color-box.profit {
background: var(--rs-color-viz-green-9);
}
.legend-color-box.expenses {
background: var(--rs-color-viz-crimson-9);
}
Status indicators
.status-badge {
padding: 4px 8px;
border-radius: 4px;
font-size: 12px;
font-weight: 500;
}
.status-badge.active {
background: var(--rs-color-background-success-primary);
color: var(--rs-color-foreground-success-primary);
}
.status-badge.pending {
background: var(--rs-color-background-attention-primary);
color: var(--rs-color-foreground-attention-primary);
}
.status-badge.inactive {
background: var(--rs-color-background-neutral-secondary);
color: var(--rs-color-foreground-base-secondary);
}
Progressive enhancement
.interactive-card {
background: var(--rs-color-background-base-primary);
border: 1px solid var(--rs-color-border-base-primary);
transition: all 0.2s;
}
.interactive-card:hover {
background: var(--rs-color-background-base-primary-hover);
border-color: var(--rs-color-border-base-secondary);
}
.interactive-card:focus-within {
border-color: var(--rs-color-border-base-focus);
box-shadow: 0 0 0 3px var(--rs-color-overlay-black-a2);
}
Color primitives
The semantic colors are built on top of primitive color scales defined in separate files:
- Neutral colors:
--rs-neutral-{1-12}
- Accent colors:
--rs-accent-{1-12}
- Attention colors:
--rs-attention-{1-12}
- Danger colors:
--rs-danger-{1-12}
- Success colors:
--rs-success-{1-12}
- Visualization colors:
--rs-viz-{color}-{1-12}
While primitive colors are available, it’s recommended to use semantic color variables for better maintainability and theme consistency.
Best practices
- Use semantic colors whenever possible instead of primitive scales
- Maintain hierarchy by using primary, secondary, and tertiary color variants
- Reserve emphasis colors for high-priority actions and states
- Use overlays for creating depth without hardcoding opacity
- Choose visualization colors that provide sufficient contrast and are colorblind-friendly
- Test colors in both light and dark themes
- Follow hover state patterns using the provided hover color variants
Related