Crystal
Themes

Themes Overview

Crystal's gemstone-inspired theming system — 25 palettes, infinite personality.

Crystal's theming is built on Axis 1: Color Identity. Each theme is a complete color palette mapped to semantic tokens. Switch themes instantly by setting data-crystal on any container.

Core Themes

Theme Comparison

diamond
Primary
Accent
onyx
Primary
Accent
garnet
Primary
Accent
sapphire
Primary
Accent

Crystal ships with 8 core themes, each inspired by a gemstone:

ThemeAccentModeCharacter
DiamondCyan #06b6d4LightClean, bright, professional
OnyxCyan #22d3eeDarkDeep black, tech-forward
GarnetOrange #f97316DarkWarm red, enterprise
SapphireCyan #06b6d4DarkCool blue, professional
AmethystPink #ec4899DarkPurple, luxury/creative
CitrineOrange #ea580cLightWarm yellow, optimistic
RubyGold #fbbf24DarkBold red, high-energy
EmeraldCyan #06b6d4DarkGreen, growth/finance

Extended Themes

Five additional standalone themes for specialized use cases:

ThemeModeCharacter
TanzaniteDarkDual violet/fuchsia, glass morphism luxury
OpalLightIridescent, playful (fuchsia/purple)
QuartzLightRose/pink, warm and inviting
TopazDarkAmber/orange, bold and warm
ObsidianDarkDeep black, ultraminimal

Variant Themes

Variant themes combine a gemstone (color) with a personality (crystallization) into a single pre-configured theme. Each variant bakes in its crystallization parameters alongside colors, providing a complete brand identity in one selector.

VariantGemstonePersonalityModePortfolio
Diamond CleanDiamondCleanLightAscend
Onyx EdgeOnyxEdgeDarkSyncFocus
Onyx LuxeOnyxLuxeDarkartasce.com
Garnet EdgeGarnetEdgeDarkHalliburton
Sapphire CleanSapphireCleanDarkDr. C App
Sapphire DreamSapphireDreamDarkVoyaVacations
Amethyst DreamAmethystDreamDarkcaitoy.com
Citrine BoldCitrineBoldDarkHashlands
Ruby BoldRubyBoldDarkArtasce Creative
Ruby EdgeRubyEdgeDarkAC Models
Ruby LuxeRubyLuxeDarkMademoiselle
Emerald CleanEmeraldCleanDarkModolla
Rose LuxeRoseLuxeDarkDelightful Portraits

Portfolio Mapping

Each portfolio brand is assigned a Crystal theme (base or variant):

BrandThemeCrystallizationStatus
OpsCenterOnyxEdgeProduction
artasce.comOnyx LuxeLuxeMapped
caitoy.comAmethyst DreamDreamMapped
MademoiselleRuby LuxeLuxeMapped
AC ModelsRuby EdgeEdgeMapped
Artasce CreativeRuby BoldBoldMapped
VoyaVacationsSapphire DreamDreamMapped
SyncFocusOnyx EdgeEdgeMapped
ModollaEmerald CleanCleanMapped
HashlandsCitrine BoldBoldMapped
Delightful PortraitsRose LuxeLuxeMapped
Dr. C AppSapphire CleanCleanMapped
AscendDiamond CleanCleanMapped

Applying a Theme

<!-- HTML attribute -->
<html data-crystal="sapphire-dream">
// React component
import { CrystalProvider } from '@artasce/crystal-ui';

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

Creating a Custom Theme

Define your own theme by providing values for all semantic tokens:

[data-crystal='custom'] {
  --crystal-name: 'Custom';
  --crystal-bg-primary: #your-bg;
  --crystal-bg-tertiary: #your-bg-subtle;
  --crystal-bg-secondary: #your-bg-muted;
  --crystal-surface-primary: #your-surface;
  --crystal-surface-elevated: #your-surface-elevated;
  --crystal-border-default: #your-border;
  --crystal-border-subtle: #your-border-subtle;
  --crystal-fg-primary: #your-text;
  --crystal-fg-secondary: #your-text-secondary;
  --crystal-fg-tertiary: #your-text-muted;
  --crystal-fg-primary: #your-text-primary;
  --crystal-accent-primary: #your-primary;
  --crystal-accent-secondary: #your-primary-hover;
  --crystal-accent-primary: #your-accent;
  --crystal-accent-subtle: #your-accent-subtle;
  --crystal-brand-cool: #your-cool;
  --crystal-brand-cool-hover: #your-cool-hover;
  --crystal-brand-warm: #your-warm;
}

All 18 tokens must be defined for a complete theme. See individual theme pages for value references.