palette-core 0.8.0

TOML-defined theme system with inheritance, CSS export, and multi-target rendering
Documentation

Crates.io docs.rs CI Downloads deps.rs License: MIT/Apache-2.0

Need a color palette? Do you have to hand-roll it?

Palette Core is a theme engine that turns TOML palette definitions into CSS, terminal, egui, JSON, and WASM exports.

use palette_core::preset;

let palette = preset("tokyonight").expect("builtin preset");
let css = palette.to_css();
:root {
  --bg: #1A1B26;
  --fg: #C0CAF5;
  --error: #DB4B4B;
  --syn-keyword: #BB9AF7;
  --ed-cursor: #C0CAF5;
  /* ... 98 variables total */
}

Install

cargo add palette-core

Usage

Terminal

use palette_core::preset;
use palette_core::terminal::to_terminal_theme;

let palette = preset("catppuccin").expect("builtin preset");
let theme = to_terminal_theme(&palette);

Theme variants

Variants inherit from a base and override only what changes.

[meta]
name = "My Dark Warm"
preset_id = "my_dark_warm"
inherits = "tokyonight"

[base]
background = "#24283b"

Contrast validation

use palette_core::{preset, ContrastLevel};
use palette_core::contrast::validate_palette;

let palette = preset("tokyonight").expect("builtin preset");
let violations = validate_palette(&palette, ContrastLevel::AaNormal);

Documentation

The guide covers rendering targets, theme switching, custom presets, color manipulation, platform overrides, and WASM bindings.

31 presets ship built-in — Catppuccin, TokyoNight, Dracula, Nord, Gruvbox, and more. Golden Hour is an original warm-toned family (light, dusk, twilight) exclusive to palette-core. Optional feature flags enable terminal, egui, snapshot, platform, and wasm targets.

License

Licensed under Apache-2.0 or MIT at your option.