palette-core
TOML-defined theme system with inheritance and multi-target export.
Themes are authored as TOML presets. Variants inherit from a base and override only what changes. The crate parses, merges, and converts them into typed palettes for any rendering target.
Usage
use load_preset;
use to_css_custom_properties;
let palette = load_preset?;
let css = to_css_custom_properties;
Terminal (ratatui)
use load_preset;
use to_terminal_theme;
let palette = load_preset?;
let theme = to_terminal_theme;
// theme.base["background"], theme.semantic["error"], etc.
egui
use load_preset;
use to_egui_visuals;
let palette = load_preset?;
ctx.set_visuals;
Features
| Feature | Dependency | What it adds |
|---|---|---|
terminal |
ratatui |
Palette → ratatui::style::Color maps |
egui |
egui |
Palette → egui::Visuals |
snapshot |
serde_json |
JSON serialization |
full |
all of the above | Everything |
Core functionality (parsing, merge, CSS export) has no optional dependencies.
Bundled presets
| Family | Presets |
|---|---|
| Ayu | ayu_dark, ayu_light, ayu_mirage |
| Catppuccin | catppuccin, catppuccin_frappe, catppuccin_latte, catppuccin_macchiato |
| Dracula | dracula |
| Everforest | everforest_dark, everforest_light |
| GitHub | github_dark, github_light |
| Gruvbox | gruvbox_dark, gruvbox_light |
| Kanagawa | kanagawa |
| Monokai | monokai |
| Nord | nord |
| One | one_dark, one_light |
| Rosé Pine | rose_pine, rose_pine_dawn, rose_pine_moon |
| Solarized | solarized_dark, solarized_light |
| TokyoNight | tokyonight, tokyonight_storm, tokyonight_day, tokyonight_moon |
All presets are embedded at compile time via include_str!. Use registry::preset_ids() to list them.
Preset format
Base presets define all sections. Variants declare inherits in [meta] and override only differing values.
[]
= "My Theme Storm"
= "my_theme_storm"
= "1"
= "storm"
= "preset-variant"
= "my_theme"
[]
= "#24283b"
Sections: base, semantic, diff, surface, typography, syntax, editor, terminal.
License
Licensed under either of Apache License, Version 2.0 or MIT License at your option.