Crystal
Foundations

Colors

Crystal's gemstone-themed color system with 13 distinct palettes.

Crystal uses a semantic color system where each theme provides a complete palette mapped to functional roles. You never reference raw hex values — instead, use CSS custom properties that automatically adapt to the active theme.

Live Palette

Switch themes using the theme selector in the top nav to see these colors update in real-time.

Current Theme Colors

Background
--crystal-bg
Background Subtle
--crystal-bg-subtle
Background Muted
--crystal-bg-muted
Surface
--crystal-surface
Surface Elevated
--crystal-surface-elevated
Border
--crystal-border
Border Subtle
--crystal-border-subtle
Text
--crystal-text
Text Secondary
--crystal-text-secondary
Text Muted
--crystal-text-muted
Primary
--crystal-primary
Primary Hover
--crystal-primary-hover
Accent
--crystal-accent
Accent Subtle
--crystal-accent-subtle
Cool
--crystal-cool
Warm
--crystal-warm

Click any swatch to copy the CSS variable. Colors update live with theme changes.

Semantic Tokens

Every Crystal theme defines these tokens:

Color Tokens

TokenVariableValuePreview
Background
--crystal-bg...
Background Subtle
--crystal-bg-subtle...
Background Muted
--crystal-bg-muted...
Surface
--crystal-surface...
Surface Elevated
--crystal-surface-elevated...
Border
--crystal-border...
Border Subtle
--crystal-border-subtle...
Text
--crystal-text...
Text Secondary
--crystal-text-secondary...
Text Muted
--crystal-text-muted...
Primary
--crystal-primary...
Primary Hover
--crystal-primary-hover...
Accent
--crystal-accent...
Accent Subtle
--crystal-accent-subtle...
Cool
--crystal-cool...
Warm
--crystal-warm...

Values update live with theme changes. Click any row to copy the CSS variable.

Usage

.my-card {
  background: var(--crystal-surface);
  border: 1px solid var(--crystal-border);
  color: var(--crystal-text);
}

.my-card h3 {
  color: var(--crystal-primary);
}

.my-card p {
  color: var(--crystal-text-secondary);
}

Theme Comparison

Theme Comparison

diamond
Primary
Accent
onyx
Primary
Accent
garnet
Primary
Accent

Available Themes

Crystal ships with 13 themes organized by character:

Core Themes (8)

ThemeCharacterMode
DiamondClean, bright, professionalLight
OnyxDeep black, tech-forwardDark
GarnetWarm red, enterpriseDark
SapphireCool blue, professionalDark
AmethystPurple, luxury/creativeDark
CitrineWarm yellow, optimisticLight
RubyBold red, high-energyDark
EmeraldGreen, growth/financeDark

Extended Themes (5)

ThemeCharacterMode
OpalIridescent, playfulLight
QuartzRose/pink, warmLight
TopazAmber/orange, boldDark
ObsidianDeep black, minimalDark
Amethyst DreamSignature Artasce paletteDark

Switching Themes

Set the data-crystal attribute on any container element:

<html data-crystal="onyx">
  <!-- All Crystal tokens now resolve to Onyx values -->
</html>

Or use CrystalProvider in React:

import { CrystalProvider } from '@artasce/crystal-ui';

<CrystalProvider theme="sapphire">
  <App />
</CrystalProvider>