diff --git a/crates/ui/src/theme/default-theme.json b/crates/ui/src/theme/default-theme.json index ec6dbb52..9aff66e2 100644 --- a/crates/ui/src/theme/default-theme.json +++ b/crates/ui/src/theme/default-theme.json @@ -70,14 +70,14 @@ "group_box.background": "#f5f5f5", "group_box.foreground": "#171717", "caret": "#0a0a0a", - "chart_1": "#93c5fd", + "chart_1": "#7095C0", "chart_2": "#3b82f6", "chart_3": "#2563eb", "chart_4": "#1d4ed8", "chart_5": "#1e40af", "danger.background": "#ef4444", - "danger.active.background": "#dc2626", - "danger.foreground": "#fef2f2", + "danger.active.background": "#F05252", + "danger.foreground": "#1D1C1C", "danger.hover.background": "#ef4444e6", "description_list_label.background": "#f5f5f5", "description_list_label.foreground": "#171717", @@ -85,8 +85,8 @@ "drop_target.background": "#3b82f640", "foreground": "#0a0a0a", "info.background": "#0ea5e9", - "info.active.background": "#0284c7", - "info.foreground": "#f0f9ff", + "info.active.background": "#0284C7", + "info.foreground": "#000000", "info.hover.background": "#0ea5e9e6", "input.border": "#e5e5e5", "link.foreground": "#0a0a0a", @@ -127,8 +127,8 @@ "slider.bar.background": "#171717", "slider.thumb.background": "#ffffff", "success.background": "#22c55e", - "success.active.background": "#16a34a", - "success.foreground": "#f9fafb", + "success.active.background": "#16A34A", + "success.foreground": "#000000", "success.hover.background": "#22c55ee6", "bullish.background": "#22c55e", "bearish.background": "#ef4444", @@ -151,9 +151,9 @@ "title_bar.background": "#F8F8F8", "title_bar.border": "#e5e5e5", "warning.background": "#eab308", - "warning.active.background": "#ca8a04", + "warning.active.background": "#CA8A04", "warning.hover.background": "#eab308e6", - "warning.foreground": "#f9fafb", + "warning.foreground": "#000000", "overlay": "#0000000d", "window.border": "#e5e5e5", "disabled.foreground": "#0000005C", @@ -335,8 +335,8 @@ "chart_1": "#93c5fd", "chart_2": "#3b82f6", "chart_3": "#2563eb", - "chart_4": "#1d4ed8", - "chart_5": "#1e40af", + "chart_4": "#6754D8", + "chart_5": "#5C73BF", "danger.background": "#7f1d1d", "danger.active.background": "#661717", "danger.foreground": "#fef2f2", @@ -360,7 +360,7 @@ "list.even.background": "#17171766", "list.head.background": "#17171766", "muted.background": "#262626", - "muted.foreground": "#737373", + "muted.foreground": "#808080", "popover.background": "#0a0a0a", "popover.foreground": "#fafafa", "primary.background": "#fafafa", diff --git a/crates/ui/src/theme/mod.rs b/crates/ui/src/theme/mod.rs index 4d545941..96f7ff98 100644 --- a/crates/ui/src/theme/mod.rs +++ b/crates/ui/src/theme/mod.rs @@ -16,6 +16,8 @@ mod elevation; mod fluent_tokens; mod registry; mod schema; +#[cfg(test)] +mod tests; mod theme_color; mod typography; diff --git a/crates/ui/src/theme/tests.rs b/crates/ui/src/theme/tests.rs new file mode 100644 index 00000000..8a78f345 --- /dev/null +++ b/crates/ui/src/theme/tests.rs @@ -0,0 +1,532 @@ +use std::{ + collections::BTreeSet, + fs, + path::{Path, PathBuf}, +}; + +use gpui::Hsla; + +use super::{Colorize as _, ThemeColor, ThemeConfig, ThemeSet, try_parse_color}; + +const MIN_TEXT_CONTRAST: f32 = 4.5; +const MIN_CHART_CONTRAST: f32 = 3.; +const MIN_CHART_COLOR_DISTANCE: f32 = 0.05; +const MIN_INTERACTION_STATE_DISTANCE: f32 = 0.02; + +fn bundled_theme_configs() -> Vec<(PathBuf, ThemeConfig)> { + let themes_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("../../themes"); + let mut paths = fs::read_dir(&themes_dir) + .expect("bundled themes directory should be readable") + .map(|entry| { + entry + .expect("theme directory entry should be readable") + .path() + }) + .filter(|path| { + path.extension() + .is_some_and(|extension| extension == "json") + }) + .collect::>(); + paths.push(Path::new(env!("CARGO_MANIFEST_DIR")).join("src/theme/default-theme.json")); + paths.sort(); + + paths + .into_iter() + .flat_map(|path| { + let source = fs::read_to_string(&path) + .unwrap_or_else(|error| panic!("failed to read {}: {error}", path.display())); + let set: ThemeSet = serde_json::from_str(&source) + .unwrap_or_else(|error| panic!("failed to parse {}: {error}", path.display())); + set.themes + .into_iter() + .map(move |config| (path.clone(), config)) + }) + .collect() +} + +fn resolve_colors(config: &ThemeConfig) -> ThemeColor { + let defaults = if config.mode.is_dark() { + ThemeColor::dark() + } else { + ThemeColor::light() + }; + let mut colors = ThemeColor::default(); + colors.apply_config(config, defaults.as_ref()); + colors +} + +fn hsla_to_rgba(color: Hsla) -> [f32; 4] { + let chroma = (1. - (2. * color.l - 1.).abs()) * color.s; + let hue = color.h * 6.; + let secondary = chroma * (1. - (hue.rem_euclid(2.) - 1.).abs()); + let (red, green, blue) = match hue as usize { + 0 => (chroma, secondary, 0.), + 1 => (secondary, chroma, 0.), + 2 => (0., chroma, secondary), + 3 => (0., secondary, chroma), + 4 => (secondary, 0., chroma), + _ => (chroma, 0., secondary), + }; + let match_lightness = color.l - chroma / 2.; + [ + red + match_lightness, + green + match_lightness, + blue + match_lightness, + color.a, + ] +} + +fn composite(foreground: [f32; 4], background: [f32; 4]) -> [f32; 4] { + let alpha = foreground[3] + background[3] * (1. - foreground[3]); + if alpha == 0. { + return [0.; 4]; + } + let channel = |index| { + (foreground[index] * foreground[3] + + background[index] * background[3] * (1. - foreground[3])) + / alpha + }; + [channel(0), channel(1), channel(2), alpha] +} + +fn linear_srgb(channel: f32) -> f32 { + if channel <= 0.04045 { + channel / 12.92 + } else { + ((channel + 0.055) / 1.055).powf(2.4) + } +} + +fn relative_luminance(color: [f32; 4]) -> f32 { + 0.2126 * linear_srgb(color[0]) + 0.7152 * linear_srgb(color[1]) + 0.0722 * linear_srgb(color[2]) +} + +fn contrast_ratio(foreground: Hsla, surface: Hsla, background: Hsla) -> f32 { + let background = hsla_to_rgba(background); + let surface = composite(hsla_to_rgba(surface), background); + let foreground = composite(hsla_to_rgba(foreground), surface); + let foreground_luminance = relative_luminance(foreground); + let surface_luminance = relative_luminance(surface); + (foreground_luminance.max(surface_luminance) + 0.05) + / (foreground_luminance.min(surface_luminance) + 0.05) +} + +fn oklab(color: Hsla, background: Hsla) -> [f32; 3] { + let color = composite(hsla_to_rgba(color), hsla_to_rgba(background)); + let red = linear_srgb(color[0]); + let green = linear_srgb(color[1]); + let blue = linear_srgb(color[2]); + let lightness = (0.412_221_46 * red + 0.536_332_55 * green + 0.051_445_995 * blue).cbrt(); + let medium = (0.211_903_5 * red + 0.680_699_5 * green + 0.107_396_96 * blue).cbrt(); + let short = (0.088_302_46 * red + 0.281_718_85 * green + 0.629_978_7 * blue).cbrt(); + [ + 0.210_454_26 * lightness + 0.793_617_8 * medium - 0.004_072_047 * short, + 1.977_998_5 * lightness - 2.428_592_2 * medium + 0.450_593_7 * short, + 0.025_904_037 * lightness + 0.782_771_77 * medium - 0.808_675_77 * short, + ] +} + +fn oklab_distance(left: Hsla, right: Hsla, background: Hsla) -> f32 { + let left = oklab(left, background); + let right = oklab(right, background); + ((left[0] - right[0]).powi(2) + (left[1] - right[1]).powi(2) + (left[2] - right[2]).powi(2)) + .sqrt() +} + +#[test] +fn bundled_themes_meet_text_contrast_floor() { + let mut failures = Vec::new(); + + for (path, config) in bundled_theme_configs() { + let colors = resolve_colors(&config); + let pairs = [ + ("foreground", colors.foreground, colors.background), + ("muted", colors.muted_foreground, colors.background), + ("primary", colors.primary_foreground, colors.primary), + ( + "primary hover", + colors.primary_foreground, + colors.primary_hover, + ), + ( + "primary active", + colors.primary_foreground, + colors.primary_active, + ), + ("secondary", colors.secondary_foreground, colors.secondary), + ( + "secondary hover", + colors.secondary_foreground, + colors.secondary_hover, + ), + ( + "secondary active", + colors.secondary_foreground, + colors.secondary_active, + ), + ("danger", colors.danger_foreground, colors.danger), + ( + "danger hover", + colors.danger_foreground, + colors.danger_hover, + ), + ( + "danger active", + colors.danger_foreground, + colors.danger_active, + ), + ("success", colors.success_foreground, colors.success), + ( + "success hover", + colors.success_foreground, + colors.success_hover, + ), + ( + "success active", + colors.success_foreground, + colors.success_active, + ), + ("warning", colors.warning_foreground, colors.warning), + ( + "warning hover", + colors.warning_foreground, + colors.warning_hover, + ), + ( + "warning active", + colors.warning_foreground, + colors.warning_active, + ), + ("info", colors.info_foreground, colors.info), + ("info hover", colors.info_foreground, colors.info_hover), + ("info active", colors.info_foreground, colors.info_active), + ]; + + for (name, foreground, surface) in pairs { + let ratio = contrast_ratio(foreground, surface, colors.background); + if !ratio.is_finite() || ratio < MIN_TEXT_CONTRAST { + failures.push(format!( + "{} / {} / {name}: {ratio:.2}:1", + path.display(), + config.name + )); + } + } + } + + assert!( + failures.is_empty(), + "bundled theme contrast failures:\n{}", + failures.join("\n") + ); +} + +#[test] +fn default_theme_semantic_active_states_remain_distinct() { + let (_, config) = bundled_theme_configs() + .into_iter() + .find(|(_, config)| config.name == "Default Light") + .expect("default light theme should exist"); + let colors = resolve_colors(&config); + + for (name, normal, active) in [ + ("danger", colors.danger, colors.danger_active), + ("info", colors.info, colors.info_active), + ("success", colors.success, colors.success_active), + ("warning", colors.warning, colors.warning_active), + ] { + assert_ne!(normal, active, "default light {name} active state"); + } +} + +#[test] +fn contrast_adjusted_interaction_states_remain_distinct() { + type ColorGetter = fn(&ThemeColor) -> Hsla; + + let cases: [(&str, &str, [ColorGetter; 3]); 34] = [ + ( + "Adventure", + "primary", + [|c| c.primary, |c| c.primary_hover, |c| c.primary_active], + ), + ( + "Adventure", + "danger", + [|c| c.danger, |c| c.danger_hover, |c| c.danger_active], + ), + ( + "Adventure", + "warning", + [|c| c.warning, |c| c.warning_hover, |c| c.warning_active], + ), + ( + "Adventure Time", + "primary", + [|c| c.primary, |c| c.primary_hover, |c| c.primary_active], + ), + ( + "Adventure Time", + "success", + [|c| c.success, |c| c.success_hover, |c| c.success_active], + ), + ( + "Catppuccin Latte", + "danger", + [|c| c.danger, |c| c.danger_hover, |c| c.danger_active], + ), + ( + "Catppuccin Macchiato", + "primary", + [|c| c.primary, |c| c.primary_hover, |c| c.primary_active], + ), + ( + "Everforest Light", + "secondary", + [ + |c| c.secondary, + |c| c.secondary_hover, + |c| c.secondary_active, + ], + ), + ( + "Everforest Dark", + "primary", + [|c| c.primary, |c| c.primary_hover, |c| c.primary_active], + ), + ( + "Alduin", + "primary", + [|c| c.primary, |c| c.primary_hover, |c| c.primary_active], + ), + ( + "Everforest Dark", + "secondary", + [ + |c| c.secondary, + |c| c.secondary_hover, + |c| c.secondary_active, + ], + ), + ( + "Flexoki Light", + "danger", + [|c| c.danger, |c| c.danger_hover, |c| c.danger_active], + ), + ( + "Flexoki Light", + "info", + [|c| c.info, |c| c.info_hover, |c| c.info_active], + ), + ( + "Flexoki Dark", + "success", + [|c| c.success, |c| c.success_hover, |c| c.success_active], + ), + ( + "Gruvbox Light", + "info", + [|c| c.info, |c| c.info_hover, |c| c.info_active], + ), + ( + "Gruvbox Dark", + "info", + [|c| c.info, |c| c.info_hover, |c| c.info_active], + ), + ( + "Gruvbox Dark", + "primary", + [|c| c.primary, |c| c.primary_hover, |c| c.primary_active], + ), + ( + "Hybrid Light", + "warning", + [|c| c.warning, |c| c.warning_hover, |c| c.warning_active], + ), + ( + "Hybrid Dark", + "warning", + [|c| c.warning, |c| c.warning_hover, |c| c.warning_active], + ), + ( + "Hybrid Dark", + "success", + [|c| c.success, |c| c.success_hover, |c| c.success_active], + ), + ( + "Jellybeans", + "info", + [|c| c.info, |c| c.info_hover, |c| c.info_active], + ), + ( + "Kibble", + "success", + [|c| c.success, |c| c.success_hover, |c| c.success_active], + ), + ( + "Mellifluous Light", + "primary", + [|c| c.primary, |c| c.primary_hover, |c| c.primary_active], + ), + ( + "Mellifluous Light", + "success", + [|c| c.success, |c| c.success_hover, |c| c.success_active], + ), + ( + "Mellifluous Dark", + "success", + [|c| c.success, |c| c.success_hover, |c| c.success_active], + ), + ( + "macOS Classic Dark", + "primary", + [|c| c.primary, |c| c.primary_hover, |c| c.primary_active], + ), + ( + "Solarized Light", + "success", + [|c| c.success, |c| c.success_hover, |c| c.success_active], + ), + ( + "Solarized Light", + "warning", + [|c| c.warning, |c| c.warning_hover, |c| c.warning_active], + ), + ( + "Solarized Light", + "info", + [|c| c.info, |c| c.info_hover, |c| c.info_active], + ), + ( + "Spaceduck", + "primary", + [|c| c.primary, |c| c.primary_hover, |c| c.primary_active], + ), + ( + "Tokyo Storm", + "primary", + [|c| c.primary, |c| c.primary_hover, |c| c.primary_active], + ), + ( + "Tokyo Moon", + "primary", + [|c| c.primary, |c| c.primary_hover, |c| c.primary_active], + ), + ( + "Twilight", + "danger", + [|c| c.danger, |c| c.danger_hover, |c| c.danger_active], + ), + ( + "Twilight", + "info", + [|c| c.info, |c| c.info_hover, |c| c.info_active], + ), + ]; + let configs = bundled_theme_configs(); + + for (theme_name, state_name, getters) in cases { + let (path, config) = configs + .iter() + .find(|(_, config)| config.name == theme_name) + .unwrap_or_else(|| panic!("bundled theme {theme_name} should exist")); + let colors = resolve_colors(config); + let states = getters.map(|get| get(&colors)); + + for left in 0..states.len() { + for right in left + 1..states.len() { + let distance = oklab_distance(states[left], states[right], colors.background); + assert!( + distance >= MIN_INTERACTION_STATE_DISTANCE, + "{} / {theme_name} / {state_name} states {left} and {right}: OKLab distance {distance:.3}", + path.display() + ); + } + } + } +} + +#[test] +fn bundled_themes_define_distinct_chart_palettes() { + let mut failures = Vec::new(); + + for (path, config) in bundled_theme_configs() { + let configured = [ + config.colors.chart_1.as_ref(), + config.colors.chart_2.as_ref(), + config.colors.chart_3.as_ref(), + config.colors.chart_4.as_ref(), + config.colors.chart_5.as_ref(), + ]; + if configured.iter().any(|color| color.is_none()) { + failures.push(format!( + "{} / {}: missing chart.1 through chart.5", + path.display(), + config.name + )); + continue; + } + if let Some(invalid) = configured + .iter() + .flatten() + .find(|color| try_parse_color(color).is_err()) + { + failures.push(format!( + "{} / {}: invalid chart color {invalid}", + path.display(), + config.name + )); + continue; + } + + let colors = resolve_colors(&config); + let palette = [ + colors.chart_1, + colors.chart_2, + colors.chart_3, + colors.chart_4, + colors.chart_5, + ]; + let hex = palette.map(|color| color.to_hex()); + if hex.iter().collect::>().len() != hex.len() { + failures.push(format!( + "{} / {}: duplicate chart colors {hex:?}", + path.display(), + config.name + )); + } + + for (index, color) in palette.iter().enumerate() { + let ratio = contrast_ratio(*color, colors.background, colors.background); + if !ratio.is_finite() || ratio < MIN_CHART_CONTRAST { + failures.push(format!( + "{} / {} / chart.{}: {ratio:.2}:1 against background", + path.display(), + config.name, + index + 1 + )); + } + } + + for left in 0..palette.len() { + for right in left + 1..palette.len() { + let distance = oklab_distance(palette[left], palette[right], colors.background); + if !distance.is_finite() || distance < MIN_CHART_COLOR_DISTANCE { + failures.push(format!( + "{} / {} / chart.{} and chart.{}: OKLab distance {distance:.3}", + path.display(), + config.name, + left + 1, + right + 1 + )); + } + } + } + } + + assert!( + failures.is_empty(), + "bundled theme chart palette failures:\n{}", + failures.join("\n") + ); +} diff --git a/themes/adventure.json b/themes/adventure.json index 4f34925e..d7e9a619 100644 --- a/themes/adventure.json +++ b/themes/adventure.json @@ -13,6 +13,9 @@ "background": "#040404", "border": "#282828", "danger.background": "#d84a33", + "danger.foreground": "#000000", + "danger.hover.background": "#CD4630", + "danger.active.background": "#E15A3A", "foreground": "#feffff", "input.border": "#333333", "link.active.foreground": "#417AB3", @@ -22,14 +25,17 @@ "list.active.border": "#5da602", "list.even.background": "#0e0e0e", "muted.background": "#171717", - "muted.foreground": "#5d6165", + "muted.foreground": "#74777b", "panel.background": "#003a5b", "popover.background": "#040404", "popover.foreground": "#feffff", - "primary.active.background": "#0265a799", + "primary.active.background": "#5FA8CC", "primary.background": "#4384ad", - "primary.foreground": "#feffff", - "primary.hover.background": "#417AB3", + "primary.foreground": "#111111", + "primary.hover.background": "#4B8DB5", + "success.foreground": "#050505", + "warning.hover.background": "#B68700", + "warning.active.background": "#90852B", "scrollbar.background": "#003a5b00", "scrollbar.thumb.background": "#606060", "secondary.background": "#171a1c", @@ -57,7 +63,12 @@ "base.magenta": "#882252", "base.magenta.light": "#e599bc", "base.yellow": "#aa7900", - "base.yellow.light": "#ffb670" + "base.yellow.light": "#ffb670", + "chart.1": "#5C8FC2", + "chart.2": "#41b3a9", + "chart.3": "#5da602", + "chart.4": "#aa7900", + "chart.5": "#DC5D49" }, "highlight": { "editor.foreground": "#feffff", @@ -175,14 +186,18 @@ "list.active.border": "#549235", "list.even.background": "#1c1a37", "muted.background": "#29274a", - "muted.foreground": "#717192", + "muted.foreground": "#8787a3", "panel.background": "#003a5b", "popover.background": "#1f1d45", "popover.foreground": "#C7C7D4", - "primary.active.background": "#5f72c699", + "primary.active.background": "#8EA0E8", "primary.background": "#5f72c6", - "primary.foreground": "#ffffff", - "primary.hover.background": "#5f72c6aa", + "primary.foreground": "#000000", + "danger.foreground": "#fafafa", + "primary.hover.background": "#6F82D4", + "success.active.background": "#71A24A", + "warning.active.background": "#AB622A", + "info.active.background": "#21836B", "scrollbar.background": "#003a5b00", "scrollbar.thumb.background": "#555465", "secondary.background": "#2e2c51", @@ -211,7 +226,12 @@ "base.magenta": "#665993", "base.magenta.light": "#9b5953", "base.yellow": "#ce7837", - "base.yellow.light": "#efc11a" + "base.yellow.light": "#efc11a", + "chart.1": "#4D6FB8", + "chart.2": "#26977b", + "chart.3": "#549235", + "chart.4": "#ce7837", + "chart.5": "#B3525C" }, "highlight": { "editor.foreground": "#f8dcc0", diff --git a/themes/alduin.json b/themes/alduin.json index a4fc0f7e..61a41907 100644 --- a/themes/alduin.json +++ b/themes/alduin.json @@ -13,8 +13,9 @@ "background": "#1C1C1C", "border": "#3a3a3a", "danger.background": "#cc241d", + "danger.foreground": "#fafafa", "danger.active.background": "#cc241d", - "danger.hover.background": "#fb4934", + "danger.hover.background": "#DB3024", "foreground": "#9E9E9E", "input.border": "#504945", "link.active.foreground": "#83a598", @@ -27,10 +28,12 @@ "muted.background": "#262626", "muted.foreground": "#878787", "panel.background": "#282828", - "primary.active.background": "#45858899", + "primary.active.background": "#4B8D90", "primary.background": "#458588", - "primary.foreground": "#F0F0F0", - "primary.hover.background": "#458588AA", + "primary.foreground": "#000000", + "primary.hover.background": "#5B9A9D", + "success.active.background": "#6D7955", + "info.active.background": "#878787", "scrollbar.background": "#28282800", "scrollbar.thumb.background": "#504945", "secondary.background": "#282828", @@ -51,7 +54,12 @@ "base.magenta": "#af8787", "base.magenta.light": "#af878788", "base.red": "#8b5f61", - "base.yellow": "#9d906c" + "base.yellow": "#9d906c", + "chart.1": "#87afaf", + "chart.2": "#878787", + "chart.3": "#7a875f", + "chart.4": "#9d906c", + "chart.5": "#8b5f61" }, "highlight": { "editor.foreground": "#DDDDDD", diff --git a/themes/ayu.json b/themes/ayu.json index 7070a4c5..a14d9308 100644 --- a/themes/ayu.json +++ b/themes/ayu.json @@ -20,19 +20,19 @@ "list.even.background": "#E6E6E6", "list.head.background": "#F4F4F599", "muted.background": "#F4F4F5", - "muted.foreground": "#99a0a6", + "muted.foreground": "#6f747a", "panel.background": "#F3F4F5", "popover.background": "#ECECED", "popover.foreground": "#5C6773", "primary.active.background": "#42accf", "primary.background": "#55b4d3", - "primary.foreground": "#FAFAFA", + "primary.foreground": "#111111", "primary.hover.background": "#5fb9d7", "scrollbar.background": "#FAFAFA00", "scrollbar.thumb.background": "#5c61664c", "secondary.active.background": "#CECECE", "secondary.background": "#ECECED", - "secondary.foreground": "#5C6773", + "secondary.foreground": "#505964", "secondary.hover.background": "#e0e0e0", "tab.active.background": "#FCFCFC", "tab.active.foreground": "#5C6773", @@ -45,7 +45,12 @@ "base.blue": "#55b4d3", "base.green": "#85b304", "base.magenta": "#9371f0", - "base.cyan": "#4dbf99" + "base.cyan": "#4dbf99", + "chart.1": "#337084", + "chart.2": "#2F765F", + "chart.3": "#527003", + "chart.4": "#957331", + "chart.5": "#AC5151" }, "highlight": { "editor.foreground": "#5C6773", @@ -246,12 +251,14 @@ "list.active.border": "#36A3D9", "list.even.background": "#191F2A99", "muted.background": "#16191F", - "muted.foreground": "#52514f", + "muted.foreground": "#7d7c79", "popover.background": "#0D1016", "popover.foreground": "#B3B1AD", "primary.active.background": "#36A3D9", "primary.background": "#5ac1fe", "primary.foreground": "#1F2430", + "danger.foreground": "#0D0F14", + "info.foreground": "#fafafa", "primary.hover.background": "#3DAEE9", "scrollbar.background": "#0A0E1400", "scrollbar.thumb.background": "#bfbdb64c", @@ -269,7 +276,12 @@ "base.blue": "#5ac1fe", "base.green": "#aad84c", "base.magenta": "#d2a6ff", - "base.cyan": "#5a728b" + "base.cyan": "#5a728b", + "chart.1": "#5ac1fe", + "chart.2": "#5a728b", + "chart.3": "#aad84c", + "chart.4": "#FEB454", + "chart.5": "#ef7177" }, "highlight": { "editor.foreground": "#bfbdb6", diff --git a/themes/catppuccin.json b/themes/catppuccin.json index e6b35ce3..cf24b9c1 100644 --- a/themes/catppuccin.json +++ b/themes/catppuccin.json @@ -23,11 +23,12 @@ "list.even.background": "#EFF1F5", "list.head.background": "#dce0e8", "muted.background": "#dce0e8", - "muted.foreground": "#9a9db2", + "muted.foreground": "#63667f", "panel.background": "#dce0e8", "primary.active.background": "#7287fd", "primary.background": "#7287fd", - "primary.foreground": "#EFF1F5", + "primary.foreground": "#111111", + "danger.active.background": "#E16E5A", "scrollbar.background": "#EFF1F500", "scrollbar.thumb.background": "#acb0be", "secondary.active.background": "#CCD2DE", @@ -47,7 +48,12 @@ "base.blue": "#78acdc", "base.magenta": "#8778dc", "base.magenta.light": "#9978dc66", - "base.cyan": "#53d2b0" + "base.cyan": "#53d2b0", + "chart.1": "#4D7091", + "chart.2": "#337F6C", + "chart.3": "#3E7528", + "chart.4": "#936018", + "chart.5": "#9A4B3B" }, "highlight": { "editor.foreground": "#4c4f69", @@ -404,6 +410,7 @@ "background": "#232634", "border": "#3e4255", "ring": "#f2d5cf", + "danger.foreground": "#0F1016", "foreground": "#c6d0f5", "input.border": "#51576d", "list.active.background": "#8caaee15", @@ -437,7 +444,12 @@ "base.blue": "#8caaee", "base.magenta": "#9882e7", "base.magenta.light": "#9882e766", - "base.cyan": "#81c8be" + "base.cyan": "#81c8be", + "chart.1": "#8caaee", + "chart.2": "#81c8be", + "chart.3": "#a6d189", + "chart.4": "#e7d682", + "chart.5": "#e78284" }, "highlight": { "editor.foreground": "#c6d0f5", @@ -542,6 +554,7 @@ "border": "#494d64", "ring": "#f4dbd6", "danger.background": "#ed8796", + "danger.foreground": "#151722", "foreground": "#cad3f5", "input.border": "#494d64", "link.active.foreground": "#8aadf4", @@ -554,10 +567,10 @@ "muted.background": "#282a3a", "muted.foreground": "#b8c0e0", "popover.foreground": "#cad3f5", - "primary.active.background": "#8aadf499", + "primary.active.background": "#6F95D8", "primary.background": "#8aadf4", - "primary.foreground": "#24273a", - "primary.hover.background": "#8aadf4", + "primary.foreground": "#020203", + "primary.hover.background": "#A0C0F6", "scrollbar.background": "#24273a00", "scrollbar.thumb.background": "#494d64", "secondary.active.background": "#3a3f55", @@ -575,7 +588,12 @@ "base.blue": "#8aadf4", "base.magenta": "#f5bde6", "base.magenta.light": "#f5bde666", - "base.cyan": "#8bd5ca" + "base.cyan": "#8bd5ca", + "chart.1": "#8aadf4", + "chart.2": "#8bd5ca", + "chart.3": "#a6da95", + "chart.4": "#eed49f", + "chart.5": "#ed8796" }, "highlight": { "editor.foreground": "#cad3f5", @@ -699,7 +717,7 @@ "list.even.background": "#161622", "list.head.background": "#1E1E2E", "muted.background": "#302d41", - "muted.foreground": "#6c7086", + "muted.foreground": "#7c8198", "panel.background": "#302d41", "popover.background": "#1e1e2e", "popover.foreground": "#cdd6f4", @@ -724,7 +742,12 @@ "base.blue": "#89b4fa", "base.magenta": "#f5c2e7", "base.magenta.light": "#f38ba866", - "base.cyan": "#94e2d5" + "base.cyan": "#94e2d5", + "chart.1": "#89b4fa", + "chart.2": "#94e2d5", + "chart.3": "#a6e3a1", + "chart.4": "#f9e2af", + "chart.5": "#f38ba8" }, "highlight": { "editor.foreground": "#cdd6f4", diff --git a/themes/everforest.json b/themes/everforest.json index 56229dc1..67ad444b 100644 --- a/themes/everforest.json +++ b/themes/everforest.json @@ -13,7 +13,7 @@ "background": "#FEFCEE", "border": "#E7E5D4", "danger.background": "#e67e80", - "danger.foreground": "#ffffff", + "danger.foreground": "#111111", "foreground": "#5F6D75", "input.border": "#E7E5D4", "link.active.foreground": "#7fbbb3", @@ -24,15 +24,17 @@ "list.even.background": "#F4F1E2", "list.head.background": "#F4F1E2", "muted.background": "#f1f0e2", - "muted.foreground": "#959a9d", + "muted.foreground": "#69757d", "popover.background": "#FEFCEE", "popover.foreground": "#5F6D75", "primary.background": "#e69875", - "primary.foreground": "#FEFCEE", + "primary.foreground": "#111111", "scrollbar.background": "#e0e0e000", "scrollbar.thumb.background": "#D7D5C4", "secondary.background": "#EEEADA", - "secondary.foreground": "#5F6D75", + "secondary.foreground": "#505860", + "secondary.active.background": "#E3DECF", + "secondary.hover.background": "#D6D0BF", "tab.active.background": "#FEFCEE", "tab.active.foreground": "#5F6D75", "tab.background": "#F4F1E200", @@ -46,7 +48,12 @@ "base.blue": "#7fbbb3", "base.magenta": "#d699b6", "base.magenta.light": "#d699b699", - "base.cyan": "#83c092" + "base.cyan": "#83c092", + "chart.1": "#3B6F78", + "chart.2": "#38754A", + "chart.3": "#697531", + "chart.4": "#87744F", + "chart.5": "#9B5456" }, "highlight": { "editor.foreground": "#5F6D75", @@ -165,18 +172,20 @@ "list.even.background": "#2E383B", "list.head.background": "#2E383B", "muted.background": "#2E383B", - "muted.foreground": "#6D7873", + "muted.foreground": "#949688", "panel.background": "#2E383B", "popover.background": "#262E34", "popover.foreground": "#d3c6aa", "primary.background": "#e69875", - "primary.foreground": "#262E34", + "primary.active.background": "#F0A984", + "primary.foreground": "#20272C", + "danger.foreground": "#0B0D0F", "scrollbar.background": "#2E383B00", "scrollbar.thumb.background": "#485156", "secondary.background": "#2E383B", - "secondary.foreground": "#849087", - "secondary.active.background": "#303b3e", - "secondary.hover.background": "#3E474B99", + "secondary.foreground": "#FFFFFF", + "secondary.active.background": "#232A2D", + "secondary.hover.background": "#3A4548", "tab.active.background": "#262E34", "tab.active.foreground": "#d3c6aa", "tab.background": "#262E3400", @@ -190,7 +199,12 @@ "base.blue": "#7fbbb3", "base.magenta": "#844d64", "base.magenta.light": "#844d6499", - "base.cyan": "#83c092" + "base.cyan": "#83c092", + "chart.1": "#7fbbb3", + "chart.2": "#83c092", + "chart.3": "#9FC85F", + "chart.4": "#dbbc7f", + "chart.5": "#e67e80" }, "highlight": { "editor.foreground": "#d3c6aa", diff --git a/themes/fahrenheit.json b/themes/fahrenheit.json index abca0b86..407a2447 100644 --- a/themes/fahrenheit.json +++ b/themes/fahrenheit.json @@ -48,7 +48,12 @@ "base.magenta": "#3a286c", "base.magenta.light": "#58197a", "base.cyan": "#027272", - "base.cyan.light": "#36c9c9" + "base.cyan.light": "#36c9c9", + "chart.1": "#475D83", + "chart.2": "#027272", + "chart.3": "#027225", + "chart.4": "#726302", + "chart.5": "#7D5F49" }, "highlight": { "editor.foreground": "#FFFFCE", diff --git a/themes/flexoki.json b/themes/flexoki.json index 7e3ece91..2a5fe532 100644 --- a/themes/flexoki.json +++ b/themes/flexoki.json @@ -23,8 +23,11 @@ "muted.background": "#F2F0E5", "muted.foreground": "#6F6E69", "primary.background": "#3AA99F", - "primary.foreground": "#FAFAFA", + "primary.foreground": "#111111", + "danger.foreground": "#000000", + "danger.active.background": "#E67353", "info.background": "#4385BE", + "info.active.background": "#5C9CCB", "scrollbar.background": "#FAFAFA00", "scrollbar.thumb.background": "#E6E4D9", "scrollbar.thumb.hover.background": "#DAD8CE", @@ -44,7 +47,12 @@ "base.blue": "#4385BE", "base.green": "#879A39", "base.magenta": "#CE5D97", - "base.cyan": "#3AA99F" + "base.cyan": "#3AA99F", + "chart.1": "#4385BE", + "chart.2": "#2B7D75", + "chart.3": "#879A39", + "chart.4": "#9C7810", + "chart.5": "#D14D41" }, "highlight": { "editor.foreground": "#100F0F", @@ -188,8 +196,14 @@ "popover.background": "#100F0F", "popover.foreground": "#CECDC3", "primary.background": "#24837B", - "primary.foreground": "#FFFCF0", + "primary.foreground": "#FFFFFF", + "success.hover.background": "#526F0A", + "success.active.background": "#4A6808", + "warning.active.background": "#936F01", + "warning.foreground": "#000000", + "danger.foreground": "#fafafa", "info.background": "#205EA6", + "info.foreground": "#fafafa", "scrollbar.background": "#100F0F00", "scrollbar.thumb.background": "#282726", "scrollbar.thumb.hover.background": "#343331", @@ -214,7 +228,12 @@ "base.magenta": "#A02F6F", "base.magenta.light": "#CE5D97", "base.cyan": "#24837B", - "base.cyan.light": "#3AA99F" + "base.cyan.light": "#3AA99F", + "chart.1": "#477EBE", + "chart.2": "#24837B", + "chart.3": "#66800B", + "chart.4": "#AD8301", + "chart.5": "#C05E58" }, "highlight": { "editor.foreground": "#CECDC3", diff --git a/themes/gruvbox.json b/themes/gruvbox.json index db446fc9..1a8575e2 100644 --- a/themes/gruvbox.json +++ b/themes/gruvbox.json @@ -13,8 +13,8 @@ "background": "#fbf1c7", "border": "#d5c4a1", "danger.background": "#fb4934", - "danger.active.background": "#cc241d", - "danger.foreground": "#fbf1c7", + "danger.active.background": "#E7392A", + "danger.foreground": "#111111", "foreground": "#3c3836", "input.border": "#d5c4a1", "link.active.foreground": "#458588", @@ -25,13 +25,18 @@ "list.active.border": "#d79921", "list.even.background": "#f9ecba", "muted.background": "#d5c4a166", - "muted.foreground": "#928374", + "muted.foreground": "#776b61", "panel.background": "#ebdbb2", "popover.background": "#fbf1c7", "popover.foreground": "#3c3836", "primary.active.background": "#b7841f", "primary.background": "#d79921", - "primary.foreground": "#fbf1c7", + "primary.foreground": "#111111", + "info.foreground": "#fafafa", + "info.hover.background": "#3D7450", + "info.active.background": "#245538", + "warning.foreground": "#050505", + "warning.active.background": "#ca9820", "primary.hover.background": "#d79921ee", "ring": "#d79921", "scrollbar.background": "#fbf1c700", @@ -53,7 +58,12 @@ "base.yellow": "#b57614", "base.blue": "#076678", "base.magenta": "#8f3f71", - "base.cyan": "#427b58" + "base.cyan": "#427b58", + "chart.1": "#076678", + "chart.2": "#427b58", + "chart.3": "#6F791E", + "chart.4": "#b57614", + "chart.5": "#fb4934" }, "highlight": { "editor.foreground": "#3c3836", @@ -172,13 +182,20 @@ "list.active.border": "#b17f1b", "list.even.background": "#282828", "muted.background": "#3c383655", - "muted.foreground": "#928374", + "muted.foreground": "#948575", "panel.background": "#282828", "popover.background": "#1d2021", "popover.foreground": "#ebdbb2", "primary.background": "#d79921", - "primary.foreground": "#282828", + "primary.foreground": "#1C1C1C", + "primary.active.background": "#b7841f", "primary.hover.background": "#fabd2f", + "danger.foreground": "#1F1F1F", + "danger.hover.background": "#ff5540", + "success.foreground": "#020202", + "warning.foreground": "#1C1C1C", + "info.hover.background": "#74AC76", + "info.active.background": "#83B982", "ring": "#b17f1b", "scrollbar.background": "#1d202100", "scrollbar.thumb.background": "#504945", @@ -199,7 +216,12 @@ "base.yellow": "#d79921", "base.blue": "#458588", "base.magenta": "#b16286", - "base.cyan": "#689d6a" + "base.cyan": "#689d6a", + "chart.1": "#458588", + "chart.2": "#689d6a", + "chart.3": "#98971a", + "chart.4": "#d79921", + "chart.5": "#f06555" }, "highlight": { "editor.foreground": "#DDDDDD", diff --git a/themes/harper.json b/themes/harper.json index aa9469b3..7c3cd9dd 100644 --- a/themes/harper.json +++ b/themes/harper.json @@ -18,12 +18,13 @@ "list.active.border": "#B196C699", "list.even.background": "#18151B77", "muted.background": "#171717", - "muted.foreground": "#726E69", + "muted.foreground": "#79756f", "panel.background": "#003a5b", "popover.background": "#010101", "popover.foreground": "#a8a49d", "primary.background": "#B196C6", "primary.foreground": "#000000", + "success.active.background": "#3C833C", "scrollbar.background": "#003a5b00", "scrollbar.thumb.background": "#726E69", "secondary.background": "#1b1b1b", @@ -45,7 +46,12 @@ "base.magenta": "#b296c6", "base.magenta.light": "#b296c699", "base.yellow": "#f8b63f", - "base.yellow.light": "#f8b63f99" + "base.yellow.light": "#f8b63f99", + "chart.1": "#7fb5e1", + "chart.2": "#bff5e5", + "chart.3": "#489e48", + "chart.4": "#f8b63f", + "chart.5": "#ff5874" }, "highlight": { "editor.foreground": "#a8a49d", diff --git a/themes/hybrid.json b/themes/hybrid.json index dd261f8d..016ee8ca 100644 --- a/themes/hybrid.json +++ b/themes/hybrid.json @@ -14,7 +14,7 @@ "background": "#E4E4E4", "border": "#CACACA", "danger.background": "#ff5f5f", - "danger.foreground": "#ffffff", + "danger.foreground": "#111111", "foreground": "#1c1c1c", "input.border": "#CACACA", "link.active.foreground": "#005f87", @@ -28,6 +28,8 @@ "muted.foreground": "#5f5f5f", "primary.background": "#005f87", "primary.foreground": "#ffffff", + "warning.foreground": "#111111", + "warning.active.background": "#A88E00", "scrollbar.background": "#E0E0E000", "scrollbar.thumb.background": "#8f8f8f", "secondary.background": "#D0D0D0", @@ -47,7 +49,12 @@ "base.blue": "#00195f", "base.magenta": "#5f1c51", "base.magenta.light": "#5f1c5111", - "base.cyan": "#005a5f" + "base.cyan": "#005a5f", + "chart.1": "#00195f", + "chart.2": "#005a5f", + "chart.3": "#005F00", + "chart.4": "#948000", + "chart.5": "#5F0000" }, "highlight": { "editor.foreground": "#1c1c1c", @@ -171,6 +178,12 @@ "popover.foreground": "#e8e8e8", "primary.background": "#15678a", "primary.foreground": "#e8e8e8", + "warning.foreground": "#000000", + "warning.hover.background": "#9D861D", + "warning.active.background": "#B09A32", + "success.foreground": "#111111", + "success.hover.background": "#759B3A", + "success.active.background": "#8FAE38", "scrollbar.background": "#1D1F2100", "scrollbar.thumb.background": "#5f5f5f", "secondary.background": "#303336", @@ -195,7 +208,12 @@ "base.magenta": "#8a1567", "base.magenta.light": "#B294BB", "base.cyan": "#15678a", - "base.cyan.light": "#7fbfb4" + "base.cyan.light": "#7fbfb4", + "chart.1": "#3E7C97", + "chart.2": "#7fbfb4", + "chart.3": "#6FA34A", + "chart.4": "#B59A32", + "chart.5": "#A25555" }, "highlight": { "editor.foreground": "#DDDDDD", diff --git a/themes/jellybeans.json b/themes/jellybeans.json index bf2bdbd4..18c9c1ce 100644 --- a/themes/jellybeans.json +++ b/themes/jellybeans.json @@ -12,8 +12,10 @@ "accent.foreground": "#e8e8e8", "background": "#151515", "border": "#2e2e2e", - "danger.foreground": "#151515", + "danger.foreground": "#010101", "foreground": "#E8E8D3", + "info.hover.background": "#00A899", + "info.active.background": "#38B7A8", "input.border": "#4E4847", "link.active.foreground": "#97bedc", "link.foreground": "#97bedc", @@ -22,7 +24,7 @@ "list.active.border": "#97bedc", "list.even.background": "#1C1C1C", "muted.background": "#242424", - "muted.foreground": "#767676", + "muted.foreground": "#7f7f7d", "panel.background": "#151515", "popover.background": "#151515", "popover.foreground": "#e8e8e8", @@ -52,7 +54,12 @@ "base.magenta": "#B294BB", "base.magenta.light": "#fbdaff", "base.cyan": "#00988e", - "base.cyan.light": "#1ab2a8" + "base.cyan.light": "#1ab2a8", + "chart.1": "#97bedc", + "chart.2": "#00988e", + "chart.3": "#94b979", + "chart.4": "#ffba7b", + "chart.5": "#e27373" }, "highlight": { "editor.foreground": "#DDDDDD", diff --git a/themes/kibble.json b/themes/kibble.json index a5c655d4..a9022685 100644 --- a/themes/kibble.json +++ b/themes/kibble.json @@ -20,7 +20,7 @@ "list.hover.background": "#2c292b54", "list.even.background": "#24222355", "muted.background": "#292a2455", - "muted.foreground": "#777777", + "muted.foreground": "#7c7c7c", "panel.background": "#003a5b", "popover.background": "#0e100a", "popover.foreground": "#f7f7f7", @@ -34,6 +34,9 @@ "secondary.foreground": "#f7f7f7", "secondary.hover.background": "#22231f", "success.background": "#5c6ee0", + "success.foreground": "#000000", + "success.hover.background": "#697AE0", + "success.active.background": "#7B8BEA", "warning.background": "#e0c85c", "info.background": "#5cd1e0", "selection.background": "#9ba787", @@ -52,7 +55,12 @@ "base.magenta": "#8400ff", "base.magenta.light": "#C495F0", "base.yellow": "#c7a302", - "base.yellow.light": "#e0c85c" + "base.yellow.light": "#e0c85c", + "chart.1": "#5364D8", + "chart.2": "#0798ab", + "chart.3": "#2BCF13", + "chart.4": "#c7a302", + "chart.5": "#C70231" }, "highlight": { "editor.foreground": "#f7f7f7", diff --git a/themes/macos-classic.json b/themes/macos-classic.json index 70c2ac87..95ecdd07 100644 --- a/themes/macos-classic.json +++ b/themes/macos-classic.json @@ -26,6 +26,9 @@ "popover.foreground": "#000000", "primary.background": "#0060de", "primary.foreground": "#FFFFFF", + "warning.foreground": "#111111", + "success.foreground": "#0A0A0A", + "info.hover.background": "#0A838F", "scrollbar.background": "#FFFFFF00", "scrollbar.thumb.background": "#C8C8C8", "secondary.active.background": "#D9D9D9", @@ -43,7 +46,12 @@ "base.blue": "#0060de", "base.green": "#319a00", "base.magenta": "#9A0068", - "base.cyan": "#007E8A" + "base.cyan": "#007E8A", + "chart.1": "#0060de", + "chart.2": "#007E8A", + "chart.3": "#319a00", + "chart.4": "#8B7600", + "chart.5": "#d21f07" }, "highlight": { "editor.foreground": "#000000", @@ -156,7 +164,9 @@ "popover.background": "#101010", "popover.foreground": "#CACCCA", "primary.background": "#077CFD", - "primary.foreground": "#F2F9FF", + "primary.foreground": "#111111", + "primary.hover.background": "#3D96FD", + "primary.active.background": "#4A80D8", "switch.background": "#393939", "switch.thumb.background": "#DAECFF", "scrollbar.background": "#13131300", @@ -176,7 +186,12 @@ "base.green": "#30D158", "base.magenta": "#A550A7", "base.red": "#FF5257", - "base.yellow": "#FFC600" + "base.yellow": "#FFC600", + "chart.1": "#419CFF", + "chart.2": "#07FDD3", + "chart.3": "#30D158", + "chart.4": "#FFC600", + "chart.5": "#FF5257" }, "highlight": { "editor.foreground": "#CACCCA", diff --git a/themes/matrix.json b/themes/matrix.json index 8a592ad7..7b751aa9 100644 --- a/themes/matrix.json +++ b/themes/matrix.json @@ -29,7 +29,7 @@ "list.active.border": "#00FF00", "list.even.background": "#00190066", "muted.background": "#001900", - "muted.foreground": "#007700", + "muted.foreground": "#168d16", "panel.background": "#001900", "popover.background": "#020D02", "popover.foreground": "#00FF00", @@ -53,7 +53,12 @@ "base.yellow": "#ffea00", "base.blue": "#0000ff", "base.magenta": "#FF00FF", - "base.cyan": "#00ffd5" + "base.cyan": "#00ffd5", + "chart.1": "#3C3CFF", + "chart.2": "#00ffd5", + "chart.3": "#00FF00", + "chart.4": "#ffea00", + "chart.5": "#FF0000" }, "highlight": { "editor.foreground": "#88FF88", diff --git a/themes/mellifluous.json b/themes/mellifluous.json index fac64574..9a7ee4af 100644 --- a/themes/mellifluous.json +++ b/themes/mellifluous.json @@ -14,7 +14,7 @@ "background": "#E7E7E7", "border": "#CACACA", "danger.active.background": "#e06c75", - "danger.hover.background": "#be5046", + "danger.hover.background": "#C05148", "foreground": "#383a42", "link.active.foreground": "#5A6599", "link.foreground": "#5A6599", @@ -24,14 +24,19 @@ "list.active.border": "#5A6599", "list.even.background": "#F0F0F0", "muted.background": "#E0E0E0", - "muted.foreground": "#828997", + "muted.foreground": "#636773", "panel.background": "#fafafa", "popover.background": "#E4E4E4", "popover.foreground": "#383a42", - "primary.active.background": "#5A6599AA", + "primary.active.background": "#3A4A82", "primary.background": "#5A6599", "primary.foreground": "#F0F0F0", - "primary.hover.background": "#626ca2", + "primary.hover.background": "#4C5C92", + "info.foreground": "#111111", + "success.active.background": "#928F49", + "warning.foreground": "#111111", + "success.foreground": "#111111", + "danger.foreground": "#000000", "scrollbar.background": "#fafafa00", "scrollbar.thumb.background": "#c0c0c0", "secondary.background": "#d0d0d0", @@ -51,7 +56,12 @@ "base.blue": "#a8a1be", "base.magenta": "#b39fb0", "base.magenta.light": "#9C699588", - "base.cyan": "#54c981" + "base.cyan": "#54c981", + "chart.1": "#776F91", + "chart.2": "#3C915D", + "chart.3": "#828040", + "chart.4": "#9B6E40", + "chart.5": "#C95954" }, "highlight": { "editor.foreground": "#383a42", @@ -176,7 +186,15 @@ "popover.foreground": "#abb2bf", "primary.active.background": "#5A6599AA", "primary.background": "#5A6599", - "primary.foreground": "#ecedf4", + "primary.foreground": "#F2F3F7", + "danger.hover.background": "#bd5753", + "danger.active.background": "#C1504B", + "success.hover.background": "#A4A45D", + "success.active.background": "#928F49", + "info.foreground": "#111111", + "warning.foreground": "#111111", + "success.foreground": "#111111", + "danger.foreground": "#000000", "primary.hover.background": "#626ca2", "scrollbar.background": "#282c3400", "scrollbar.thumb.background": "#444444", @@ -196,7 +214,12 @@ "base.blue": "#5481c9", "base.magenta": "#9C6995", "base.magenta.light": "#9C699577", - "base.cyan": "#54c9bd" + "base.cyan": "#54c9bd", + "chart.1": "#5481c9", + "chart.2": "#54c9bd", + "chart.3": "#828040", + "chart.4": "#c98d54", + "chart.5": "#C95954" }, "highlight": { "editor.foreground": "#abb2bf", diff --git a/themes/molokai.json b/themes/molokai.json index 5d0c2cbf..2efa95d1 100644 --- a/themes/molokai.json +++ b/themes/molokai.json @@ -21,12 +21,12 @@ "list.active.border": "#E14774AA", "list.even.background": "#E4DEDA33", "muted.background": "#f1eded", - "muted.foreground": "#767676", + "muted.foreground": "#737373", "panel.background": "#FEFAF9", "popover.background": "#FEFAF9", "popover.foreground": "#0a0a0a", "primary.background": "#E14774", - "primary.foreground": "#fafafa", + "primary.foreground": "#040404", "scrollbar.background": "#FEFAF900", "scrollbar.thumb.background": "#ADADB0", "secondary.background": "#E4DEDA", @@ -40,7 +40,12 @@ "base.blue": "#e16032", "base.blue.light": "#e16032", "base.magenta": "#7058be", - "base.cyan": "#0acc78" + "base.cyan": "#0acc78", + "chart.1": "#5A43A7", + "chart.2": "#087D49", + "chart.3": "#4F7D06", + "chart.4": "#806C06", + "chart.5": "#AB5030" }, "highlight": { "editor.foreground": "#0a0a0a", @@ -156,12 +161,15 @@ "list.active.border": "#f9267288", "list.even.background": "#292c2e", "muted.background": "#232526", - "muted.foreground": "#5b5a54", + "muted.foreground": "#85857f", "panel.background": "#1b1d1e", "popover.background": "#1b1d1e", "popover.foreground": "#f8f8f2", "primary.background": "#dc1860", "primary.foreground": "#f8f8f2", + "info.foreground": "#fafafa", + "warning.foreground": "#ffffff", + "success.foreground": "#111111", "scrollbar.background": "#1b1d1e00", "scrollbar.thumb.background": "#4b4b4b", "secondary.background": "#292c2e", @@ -176,7 +184,12 @@ "base.yellow": "#807607", "base.blue": "#075880", "base.magenta": "#800780", - "base.cyan": "#07807e" + "base.cyan": "#07807e", + "chart.1": "#3E7894", + "chart.2": "#07807e", + "chart.3": "#82cc0a", + "chart.4": "#807607", + "chart.5": "#dc1860" }, "highlight": { "editor.foreground": "#DDDDDD", @@ -280,4 +293,4 @@ } } ] -} \ No newline at end of file +} diff --git a/themes/solarized.json b/themes/solarized.json index 9d971b95..02395a9d 100644 --- a/themes/solarized.json +++ b/themes/solarized.json @@ -19,12 +19,17 @@ "list.active.border": "#586E75", "list.even.background": "#EEE8D599", "muted.background": "#eee8d5", - "muted.foreground": "#93a1a1", + "muted.foreground": "#5f747b", "panel.background": "#fdf6e3", "popover.background": "#fdf6e3", "popover.foreground": "#073642", "primary.background": "#586E75", - "primary.foreground": "#fdf6e3", + "primary.hover.background": "#50666d", + "primary.foreground": "#ffffff", + "success.foreground": "#fafafa", + "success.hover.background": "#657044", + "warning.hover.background": "#4B5145", + "info.hover.background": "#315A58", "scrollbar.background": "#EEE8D500", "scrollbar.thumb.background": "#d5cbaf", "secondary.background": "#EEE8D5", @@ -44,7 +49,12 @@ "base.yellow": "#756e58", "base.blue": "#586975", "base.magenta": "#755866", - "base.cyan": "#587573" + "base.cyan": "#587573", + "chart.1": "#1B6FA8", + "chart.2": "#157A70", + "chart.3": "#667A0A", + "chart.4": "#8A6500", + "chart.5": "#B83A3A" }, "highlight": { "editor.foreground": "#586E75", @@ -184,7 +194,12 @@ "base.yellow": "#7d650d", "base.blue": "#0d507d", "base.magenta": "#7d0d43", - "base.cyan": "#0d7d70" + "base.cyan": "#0d7d70", + "chart.1": "#43779A", + "chart.2": "#128073", + "chart.3": "#178247", + "chart.4": "#86701E", + "chart.5": "#9E634A" }, "highlight": { "editor.foreground": "#DDDDDD", diff --git a/themes/spaceduck.json b/themes/spaceduck.json index d147c8e6..200a0a93 100644 --- a/themes/spaceduck.json +++ b/themes/spaceduck.json @@ -21,12 +21,17 @@ "list.active.border": "#089CC5", "list.even.background": "#161928", "muted.background": "#272C4255", - "muted.foreground": "#4b6479", + "muted.foreground": "#707f88", "panel.background": "#003a5b", "popover.background": "#0F111B", "popover.foreground": "#a3a49d", "primary.background": "#089CC5", - "primary.foreground": "#ecf0c1", + "primary.foreground": "#111111", + "primary.active.background": "#2FAECD", + "danger.foreground": "#000000", + "danger.hover.background": "#DC3301", + "danger.active.background": "#e03804", + "info.active.background": "#098caf", "scrollbar.background": "#003a5b00", "scrollbar.thumb.background": "#24303a", "secondary.background": "#242547", @@ -43,7 +48,12 @@ "base.cyan": "#089CC5", "base.magenta": "#C86D8C", "base.magenta.light": "#C86D8C33", - "base.yellow": "#b89c00" + "base.yellow": "#b89c00", + "chart.1": "#00a3cc", + "chart.2": "#3EA7A0", + "chart.3": "#5ccc96", + "chart.4": "#b89c00", + "chart.5": "#e33400" }, "highlight": { "editor.foreground": "#ecf0c1", diff --git a/themes/tokyonight.json b/themes/tokyonight.json index d0147300..b0f45eee 100644 --- a/themes/tokyonight.json +++ b/themes/tokyonight.json @@ -22,12 +22,13 @@ "list.active.border": "#7aa2f7", "list.even.background": "#2C304599", "muted.background": "#2C304544", - "muted.foreground": "#565f89", + "muted.foreground": "#7982ac", "panel.background": "#292e42", "popover.background": "#1a1b26", "popover.foreground": "#c0caf5", "primary.background": "#7aa2f7", - "primary.foreground": "#1a1b26", + "primary.foreground": "#0A0B0F", + "danger.foreground": "#171822", "scrollbar.background": "#1a1b2600", "scrollbar.thumb.background": "#414868", "secondary.active.background": "#292e42", @@ -42,7 +43,12 @@ "base.yellow": "#e0af68", "base.blue": "#7aa2f7", "base.magenta": "#565f89", - "base.cyan": "#7dcfff" + "base.cyan": "#7dcfff", + "chart.1": "#7aa2f7", + "chart.2": "#7dcfff", + "chart.3": "#9ece6a", + "chart.4": "#e0af68", + "chart.5": "#f7768e" }, "highlight": { "editor.foreground": "#c0caf5", @@ -162,12 +168,14 @@ "list.active.border": "#7aa2f7", "list.even.background": "#41486844", "muted.background": "#292e42", - "muted.foreground": "#565f89", + "muted.foreground": "#858eb9", "panel.background": "#292e42", "popover.background": "#24283b", "popover.foreground": "#c0caf5", "primary.background": "#7aa2f7", - "primary.foreground": "#24283b", + "primary.foreground": "#0A0B10", + "primary.active.background": "#6389DD", + "danger.foreground": "#161824", "scrollbar.background": "#24283b00", "scrollbar.thumb.background": "#414868", "secondary.active.background": "#323750", @@ -181,7 +189,12 @@ "base.yellow": "#e0af68", "base.blue": "#7aa2f7", "base.magenta": "#b283f8", - "base.cyan": "#7dcfff" + "base.cyan": "#7dcfff", + "chart.1": "#7aa2f7", + "chart.2": "#7dcfff", + "chart.3": "#9ece6a", + "chart.4": "#e0af68", + "chart.5": "#f7768e" }, "highlight": { "editor.foreground": "#B0B9E2", @@ -296,17 +309,20 @@ "list.background": "#222436", "list.even.background": "#282a40", "muted.background": "#2d3149", - "muted.foreground": "#6e738d", + "muted.foreground": "#848baa", "panel.background": "#2d3149", "popover.background": "#222436", "popover.foreground": "#c0caf5", "primary.background": "#82aaff", - "primary.foreground": "#222436", + "primary.foreground": "#13141E", + "primary.active.background": "#6F95E8", + "danger.foreground": "#1B1D2B", + "danger.active.background": "#ff818b", "scrollbar.background": "#22243600", "scrollbar.thumb.background": "#444b6a", "secondary.active.background": "#2f334c", "secondary.background": "#2d3149", - "secondary.foreground": "#8c94b5", + "secondary.foreground": "#a3abc9", "secondary.hover.background": "#31354f", "table.row.border": "#2d3149", "title_bar.background": "#1e2030", @@ -316,7 +332,12 @@ "base.yellow": "#ffc777", "base.blue": "#82aaff", "base.magenta": "#6e738d", - "base.cyan": "#86e1fc" + "base.cyan": "#86e1fc", + "chart.1": "#82aaff", + "chart.2": "#86e1fc", + "chart.3": "#c3e88d", + "chart.4": "#ffc777", + "chart.5": "#ff757f" }, "highlight": { "editor.foreground": "#c0caf5", diff --git a/themes/twilight.json b/themes/twilight.json index 5c7b92bd..a14567f3 100644 --- a/themes/twilight.json +++ b/themes/twilight.json @@ -21,6 +21,12 @@ "muted.foreground": "#828282", "primary.background": "#CDA869", "primary.foreground": "#1e1e1e", + "info.foreground": "#111111", + "info.hover.background": "#8A9597", + "info.active.background": "#56878B", + "danger.foreground": "#111111", + "danger.hover.background": "#B56841", + "danger.active.background": "#D27A4D", "scrollbar.background": "#1e1e1e00", "scrollbar.thumb.background": "#3e3e3e", "secondary.background": "#262626", @@ -46,7 +52,12 @@ "base.magenta": "#b4be7c", "base.magenta.light": "#d0dc8e99", "base.cyan": "#778385", - "base.cyan.light": "#8a989b" + "base.cyan.light": "#8a989b", + "chart.1": "#626467", + "chart.2": "#778385", + "chart.3": "#8FB35F", + "chart.4": "#D4A34A", + "chart.5": "#c06d44" }, "highlight": { "editor.foreground": "#DDDDDD",