diff --git a/README.md b/README.md index a0256d2..8d9828a 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ [![GitHub contributors](https://img.shields.io/github/contributors/ktsu-dev/ThemeProvider?label=Contributors&logo=github)](https://github.com/ktsu-dev/ThemeProvider/graphs/contributors) [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/ktsu-dev/ThemeProvider/dotnet.yml?branch=main&label=Build&logo=github)](https://github.com/ktsu-dev/ThemeProvider/actions) +[![Every ThemeProvider theme drawn by Dear ImGui](docs/gallery/overview.png)](docs/gallery/README.md) + ## Introduction `ktsu.ThemeProvider` is a comprehensive theming system that uses semantic color specifications rather than arbitrary color names. Instead of hardcoding colors like "blue" or "red", you define colors by their purpose (Primary, Error, Warning) and priority level, and the library generates consistent, accessible color palettes. It includes 38 carefully crafted themes from popular color schemes and provides built-in Dear ImGui integration with an extensible architecture for other UI frameworks. diff --git a/ThemeProvider.Test/ThemeSnapshot.approved.txt b/ThemeProvider.Test/ThemeSnapshot.approved.txt index 242709d..7166c79 100644 --- a/ThemeProvider.Test/ThemeSnapshot.approved.txt +++ b/ThemeProvider.Test/ThemeSnapshot.approved.txt @@ -83,7 +83,7 @@ Tokyo Night Day [family=Tokyo Night, variant=Day, isDark=false, themeIsDark=fals Failure = #F52A65 Debug = #9854F1 Gruvbox Dark [family=Gruvbox, variant=Dark, isDark=true, themeIsDark=true] - Neutral = #EBDBB2 #1D2021 + Neutral = #EBDBB2 #282828 Primary = #FE8019 Alternate = #D3869B Success = #B8BB26 @@ -119,7 +119,7 @@ Gruvbox Dark Soft [family=Gruvbox, variant=Dark Soft, isDark=true, themeIsDark=t Failure = #FB4934 Debug = #D3869B Gruvbox Light [family=Gruvbox, variant=Light, isDark=false, themeIsDark=false] - Neutral = #1D2021 #F9F5D7 + Neutral = #1D2021 #FBF1C7 Primary = #D65D0E Alternate = #B16286 Success = #98971A @@ -162,7 +162,7 @@ Everforest Dark [family=Everforest, variant=Dark, isDark=true, themeIsDark=true] CallToAction = #83C092 Information = #D699B6 Caution = #DBBC7F - Warning = #E67E80 + Warning = #E69875 Error = #E67E80 Failure = #E67E80 Debug = #D699B6 @@ -174,7 +174,7 @@ Everforest Dark Hard [family=Everforest, variant=Dark Hard, isDark=true, themeIs CallToAction = #83C092 Information = #D699B6 Caution = #DBBC7F - Warning = #E67E80 + Warning = #E69875 Error = #E67E80 Failure = #E67E80 Debug = #D699B6 @@ -186,43 +186,43 @@ Everforest Dark Soft [family=Everforest, variant=Dark Soft, isDark=true, themeIs CallToAction = #83C092 Information = #D699B6 Caution = #DBBC7F - Warning = #E67E80 + Warning = #E69875 Error = #E67E80 Failure = #E67E80 Debug = #D699B6 Everforest Light [family=Everforest, variant=Light, isDark=false, themeIsDark=false] - Neutral = #5C6A72 #F3EFDA + Neutral = #5C6A72 #EFEBD4 Primary = #8DA101 Alternate = #F57D26 Success = #3A94C5 CallToAction = #35A77C Information = #DF69BA Caution = #DFA000 - Warning = #F85552 + Warning = #F57D26 Error = #F85552 Failure = #F85552 Debug = #DF69BA Everforest Light Hard [family=Everforest, variant=Light Hard, isDark=false, themeIsDark=false] - Neutral = #5C6A72 #F8F4E6 + Neutral = #5C6A72 #F2EFDF Primary = #8DA101 Alternate = #F57D26 Success = #3A94C5 CallToAction = #35A77C Information = #DF69BA Caution = #DFA000 - Warning = #F85552 + Warning = #F57D26 Error = #F85552 Failure = #F85552 Debug = #DF69BA Everforest Light Soft [family=Everforest, variant=Light Soft, isDark=false, themeIsDark=false] - Neutral = #5C6A72 #F0F0E2 + Neutral = #5C6A72 #E5DFC5 Primary = #8DA101 Alternate = #F57D26 Success = #3A94C5 CallToAction = #35A77C Information = #DF69BA Caution = #DFA000 - Warning = #F85552 + Warning = #F57D26 Error = #F85552 Failure = #F85552 Debug = #DF69BA @@ -239,29 +239,29 @@ Nightfox [family=Nightfox, variant=-, isDark=true, themeIsDark=true] Failure = #C94F6D Debug = #9D79D6 Dayfox [family=Nightfox, variant=Dayfox, isDark=false, themeIsDark=false] - Neutral = #1D344F #EFEAE6 + Neutral = #3D2B5A #E4DCD4 Primary = #2848A9 - Alternate = #955F20 + Alternate = #955F61 Success = #396847 CallToAction = #287980 Information = #2848A9 - Caution = #986936 - Warning = #955F20 + Caution = #AC5402 + Warning = #955F61 Error = #A5222F Failure = #A5222F - Debug = #7847BD + Debug = #6E33CE Duskfox [family=Nightfox, variant=Duskfox, isDark=true, themeIsDark=true] - Neutral = #E0DEF4 #1A1826 - Primary = #9CCFD8 + Neutral = #E0DEF4 #191726 + Primary = #569FBA Alternate = #C4A7E7 Success = #A3BE8C CallToAction = #9CCFD8 - Information = #9CCFD8 + Information = #569FBA Caution = #F6C177 Warning = #EA9A97 Error = #EB6F92 Failure = #EB6F92 - Debug = #F5C2E7 + Debug = #EB98C3 Nordfox [family=Nightfox, variant=Nordfox, isDark=true, themeIsDark=true] Neutral = #CDCECF #232831 Primary = #81A1C1 @@ -270,19 +270,19 @@ Nordfox [family=Nightfox, variant=Nordfox, isDark=true, themeIsDark=true] CallToAction = #88C0D0 Information = #81A1C1 Caution = #EBCB8B - Warning = #D08770 + Warning = #C9826B Error = #BF616A Failure = #BF616A Debug = #B48EAD Terafox [family=Nightfox, variant=Terafox, isDark=true, themeIsDark=true] - Neutral = #FBEBD3 #0F1C1E + Neutral = #E6EAEA #0F1C1E Primary = #7AA4A1 - Alternate = #FFA500 + Alternate = #FF8349 Success = #7AA4A1 CallToAction = #A1CDD8 Information = #5A93AA - Caution = #FDB292 - Warning = #FFA500 + Caution = #FDA47F + Warning = #FF8349 Error = #E85C51 Failure = #E85C51 Debug = #AD5C7C @@ -299,14 +299,14 @@ Carbonfox [family=Nightfox, variant=Carbonfox, isDark=true, themeIsDark=true] Failure = #EE5396 Debug = #BE95FF Dawnfox [family=Nightfox, variant=Dawnfox, isDark=false, themeIsDark=false] - Neutral = #575279 #F4EDE4 - Primary = #56949F + Neutral = #575279 #EBE5DF + Primary = #286983 Alternate = #D685AF - Success = #286983 + Success = #618774 CallToAction = #56949F Information = #56949F - Caution = #D7827E - Warning = #EA9D34 + Caution = #EA9D34 + Warning = #D7827E Error = #B4637A Failure = #B4637A Debug = #907AA9 @@ -335,19 +335,19 @@ Kanagawa Dragon [family=Kanagawa, variant=Dragon, isDark=true, themeIsDark=true] Failure = #C4746E Debug = #C4746E Kanagawa Lotus [family=Kanagawa, variant=Lotus, isDark=false, themeIsDark=false] - Neutral = #545464 #F7F4DD + Neutral = #545464 #F2ECBC Primary = #4D699B Alternate = #B35B79 Success = #6F894E CallToAction = #5E857A - Information = #7E9FB8 + Information = #5A7785 Caution = #77713F - Warning = #B98F56 - Error = #CC5D73 - Failure = #CC5D73 + Warning = #E98A00 + Error = #E82424 + Failure = #E82424 Debug = #B35B79 PaperColor Light [family=PaperColor, variant=Light, isDark=false, themeIsDark=false] - Neutral = #444444 #FFFFFF + Neutral = #444444 #EEEEEE Primary = #0087AF Alternate = #8700AF Success = #008700 @@ -360,16 +360,16 @@ PaperColor Light [family=PaperColor, variant=Light, isDark=false, themeIsDark=fa Debug = #D70087 PaperColor Dark [family=PaperColor, variant=Dark, isDark=true, themeIsDark=true] Neutral = #D0D0D0 #1C1C1C - Primary = #0087D7 + Primary = #5FAFD7 Alternate = #AF87D7 Success = #5FAF00 CallToAction = #00AFAF - Information = #0087D7 + Information = #5FAFD7 Caution = #FFAF00 Warning = #FF8700 Error = #AF005F Failure = #AF005F - Debug = #D70087 + Debug = #FF5FAF Nord [family=Nord, variant=-, isDark=true, themeIsDark=true] Neutral = #ECEFF4 #2E3440 Primary = #88C0D0 @@ -400,11 +400,11 @@ VSCode Dark [family=VSCode, variant=Dark, isDark=true, themeIsDark=true] Alternate = #C586C0 Success = #B5CEA8 CallToAction = #B5CEA8 - Information = #75BEFF + Information = #59A4F9 Caution = #CE9178 - Warning = #FFCC02 - Error = #F44747 - Failure = #F44747 + Warning = #CCA700 + Error = #F14C4C + Failure = #F14C4C Debug = #C586C0 VSCode Light [family=VSCode, variant=Light, isDark=false, themeIsDark=false] Neutral = #000000 #FFFFFF @@ -412,14 +412,14 @@ VSCode Light [family=VSCode, variant=Light, isDark=false, themeIsDark=false] Alternate = #AF00DB Success = #098658 CallToAction = #098658 - Information = #316BCD + Information = #0063D3 Caution = #A31515 Warning = #BF8803 - Error = #CD3131 - Failure = #CD3131 + Error = #E51400 + Failure = #E51400 Debug = #AF00DB One Dark [family=One Dark, variant=-, isDark=true, themeIsDark=true] - Neutral = #FFFFFF #181A1F + Neutral = #ABB2BF #181A1F Primary = #61AFEF Alternate = #C678DD Success = #98C379 @@ -443,11 +443,11 @@ Monokai [family=Monokai, variant=-, isDark=true, themeIsDark=true] Failure = #F92672 Debug = #AE81FF Nightfly [family=Nightfly, variant=-, isDark=true, themeIsDark=true] - Neutral = #FFFFFF #011627 + Neutral = #C3CCDC #011627 Primary = #82AAFF Alternate = #C792EA - Success = #ADDB67 - CallToAction = #ADDB67 + Success = #A1CD5E + CallToAction = #A1CD5E Information = #7FDBCA Caution = #F78C6C Warning = #E3D18A diff --git a/ThemeProvider/Themes/Everforest/EverforestDark.cs b/ThemeProvider/Themes/Everforest/EverforestDark.cs index e6bb78d..8b37dde 100644 --- a/ThemeProvider/Themes/Everforest/EverforestDark.cs +++ b/ThemeProvider/Themes/Everforest/EverforestDark.cs @@ -14,6 +14,7 @@ public class EverforestDark : ISemanticTheme { // Colors shared by several meanings are named once, after the palette entry they come from. private const string Red = "#e67e80"; + private const string Orange = "#e69875"; // Hex values are the palette this theme mirrors; the trailing comment on each line is // that palette's own name for the color. @@ -21,12 +22,12 @@ public class EverforestDark : ISemanticTheme { Neutrals = ["#d3c6aa", "#232a2e"], // Fg, BgDim Primary = "#a7c080", // Green - Alternate = "#e69875", // Orange + Alternate = Orange, Success = "#7fbbb3", // Blue CallToAction = "#83c092", // Aqua Information = "#d699b6", // Purple Caution = "#dbbc7f", // Yellow - Warning = Red, + Warning = Orange, Error = Red, Failure = Red, Debug = "#d699b6", // Purple diff --git a/ThemeProvider/Themes/Everforest/EverforestDarkHard.cs b/ThemeProvider/Themes/Everforest/EverforestDarkHard.cs index 0ce02e8..71e2509 100644 --- a/ThemeProvider/Themes/Everforest/EverforestDarkHard.cs +++ b/ThemeProvider/Themes/Everforest/EverforestDarkHard.cs @@ -15,6 +15,7 @@ public class EverforestDarkHard : ISemanticTheme { // Colors shared by several meanings are named once, after the palette entry they come from. private const string Red = "#e67e80"; + private const string Orange = "#e69875"; // Hex values are the palette this theme mirrors; the trailing comment on each line is // that palette's own name for the color. @@ -22,12 +23,12 @@ public class EverforestDarkHard : ISemanticTheme { Neutrals = ["#d3c6aa", "#1e2326"], // Fg, BgDim Primary = "#a7c080", // Green - Alternate = "#e69875", // Orange + Alternate = Orange, Success = "#7fbbb3", // Blue CallToAction = "#83c092", // Aqua Information = "#d699b6", // Purple Caution = "#dbbc7f", // Yellow - Warning = Red, + Warning = Orange, Error = Red, Failure = Red, Debug = "#d699b6", // Purple diff --git a/ThemeProvider/Themes/Everforest/EverforestDarkSoft.cs b/ThemeProvider/Themes/Everforest/EverforestDarkSoft.cs index 68043a5..3877a1c 100644 --- a/ThemeProvider/Themes/Everforest/EverforestDarkSoft.cs +++ b/ThemeProvider/Themes/Everforest/EverforestDarkSoft.cs @@ -15,6 +15,7 @@ public class EverforestDarkSoft : ISemanticTheme { // Colors shared by several meanings are named once, after the palette entry they come from. private const string Red = "#e67e80"; + private const string Orange = "#e69875"; // Hex values are the palette this theme mirrors; the trailing comment on each line is // that palette's own name for the color. @@ -22,12 +23,12 @@ public class EverforestDarkSoft : ISemanticTheme { Neutrals = ["#d3c6aa", "#293136"], // Fg, BgDim Primary = "#a7c080", // Green - Alternate = "#e69875", // Orange + Alternate = Orange, Success = "#7fbbb3", // Blue CallToAction = "#83c092", // Aqua Information = "#d699b6", // Purple Caution = "#dbbc7f", // Yellow - Warning = Red, + Warning = Orange, Error = Red, Failure = Red, Debug = "#d699b6", // Purple diff --git a/ThemeProvider/Themes/Everforest/EverforestLight.cs b/ThemeProvider/Themes/Everforest/EverforestLight.cs index a6bbe0b..9f17148 100644 --- a/ThemeProvider/Themes/Everforest/EverforestLight.cs +++ b/ThemeProvider/Themes/Everforest/EverforestLight.cs @@ -14,19 +14,20 @@ public class EverforestLight : ISemanticTheme { // Colors shared by several meanings are named once, after the palette entry they come from. private const string Red = "#f85552"; + private const string Orange = "#f57d26"; // Hex values are the palette this theme mirrors; the trailing comment on each line is // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#5c6a72", "#f3efda"], // Fg, BgDim + Neutrals = ["#5c6a72", "#efebd4"], // Fg, BgDim Primary = "#8da101", // Green - Alternate = "#f57d26", // Orange + Alternate = Orange, Success = "#3a94c5", // Blue CallToAction = "#35a77c", // Aqua Information = "#df69ba", // Purple Caution = "#dfa000", // Yellow - Warning = Red, + Warning = Orange, Error = Red, Failure = Red, Debug = "#df69ba", // Purple diff --git a/ThemeProvider/Themes/Everforest/EverforestLightHard.cs b/ThemeProvider/Themes/Everforest/EverforestLightHard.cs index 5570778..3e9798a 100644 --- a/ThemeProvider/Themes/Everforest/EverforestLightHard.cs +++ b/ThemeProvider/Themes/Everforest/EverforestLightHard.cs @@ -15,19 +15,20 @@ public class EverforestLightHard : ISemanticTheme { // Colors shared by several meanings are named once, after the palette entry they come from. private const string Red = "#f85552"; + private const string Orange = "#f57d26"; // Hex values are the palette this theme mirrors; the trailing comment on each line is // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#5c6a72", "#f8f4e6"], // Fg, BgDim + Neutrals = ["#5c6a72", "#f2efdf"], // Fg, BgDim Primary = "#8da101", // Green - Alternate = "#f57d26", // Orange + Alternate = Orange, Success = "#3a94c5", // Blue CallToAction = "#35a77c", // Aqua Information = "#df69ba", // Purple Caution = "#dfa000", // Yellow - Warning = Red, + Warning = Orange, Error = Red, Failure = Red, Debug = "#df69ba", // Purple diff --git a/ThemeProvider/Themes/Everforest/EverforestLightSoft.cs b/ThemeProvider/Themes/Everforest/EverforestLightSoft.cs index 1951321..1fa265e 100644 --- a/ThemeProvider/Themes/Everforest/EverforestLightSoft.cs +++ b/ThemeProvider/Themes/Everforest/EverforestLightSoft.cs @@ -15,19 +15,20 @@ public class EverforestLightSoft : ISemanticTheme { // Colors shared by several meanings are named once, after the palette entry they come from. private const string Red = "#f85552"; + private const string Orange = "#f57d26"; // Hex values are the palette this theme mirrors; the trailing comment on each line is // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#5c6a72", "#f0f0e2"], // Fg, BgDim + Neutrals = ["#5c6a72", "#e5dfc5"], // Fg, BgDim Primary = "#8da101", // Green - Alternate = "#f57d26", // Orange + Alternate = Orange, Success = "#3a94c5", // Blue CallToAction = "#35a77c", // Aqua Information = "#df69ba", // Purple Caution = "#dfa000", // Yellow - Warning = Red, + Warning = Orange, Error = Red, Failure = Red, Debug = "#df69ba", // Purple diff --git a/ThemeProvider/Themes/Gruvbox/GruvboxDark.cs b/ThemeProvider/Themes/Gruvbox/GruvboxDark.cs index 1603d7b..c2664d0 100644 --- a/ThemeProvider/Themes/Gruvbox/GruvboxDark.cs +++ b/ThemeProvider/Themes/Gruvbox/GruvboxDark.cs @@ -16,7 +16,7 @@ public class GruvboxDark : ISemanticTheme // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#ebdbb2", "#1d2021"], // Light1, DarkHard + Neutrals = ["#ebdbb2", "#282828"], // Light1, Dark0 Primary = "#fe8019", // BrightOrange Alternate = "#d3869b", // BrightPurple Success = "#b8bb26", // BrightGreen diff --git a/ThemeProvider/Themes/Gruvbox/GruvboxLight.cs b/ThemeProvider/Themes/Gruvbox/GruvboxLight.cs index a9e0442..7075b55 100644 --- a/ThemeProvider/Themes/Gruvbox/GruvboxLight.cs +++ b/ThemeProvider/Themes/Gruvbox/GruvboxLight.cs @@ -16,7 +16,7 @@ public class GruvboxLight : ISemanticTheme // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#1d2021", "#f9f5d7"], // Dark0Hard, LightHard + Neutrals = ["#1d2021", "#fbf1c7"], // Dark0Hard, Light0 Primary = "#d65d0e", // FadedOrange Alternate = "#b16286", // FadedPurple Success = "#98971a", // FadedGreen diff --git a/ThemeProvider/Themes/Kanagawa/KanagawaLotus.cs b/ThemeProvider/Themes/Kanagawa/KanagawaLotus.cs index ff4ad5d..eef73bd 100644 --- a/ThemeProvider/Themes/Kanagawa/KanagawaLotus.cs +++ b/ThemeProvider/Themes/Kanagawa/KanagawaLotus.cs @@ -17,16 +17,16 @@ public class KanagawaLotus : ISemanticTheme // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#545464", "#f7f4dd"], // Fg0, BgAlt + Neutrals = ["#545464", "#f2ecbc"], // LotusInk1, LotusWhite3 Primary = "#4d699b", // CrystalBlue Alternate = "#b35b79", // SakuraPink Success = "#6f894e", // SummerGreen CallToAction = "#5e857a", // SpringBlue - Information = "#7e9fb8", // IceBlue + Information = "#5a7785", // LotusTeal3 Caution = "#77713f", // AutumnYellow - Warning = "#b98f56", // BoatYellow2 - Error = "#cc5d73", // WaveRed - Failure = "#cc5d73", // WaveRed + Warning = "#e98a00", // LotusOrange2 + Error = "#e82424", // LotusRed3 + Failure = "#e82424", // LotusRed3 Debug = "#b35b79", // SakuraPink }; diff --git a/ThemeProvider/Themes/Nightfly/Nightfly.cs b/ThemeProvider/Themes/Nightfly/Nightfly.cs index 4950624..8c43c52 100644 --- a/ThemeProvider/Themes/Nightfly/Nightfly.cs +++ b/ThemeProvider/Themes/Nightfly/Nightfly.cs @@ -16,11 +16,11 @@ public class Nightfly : ISemanticTheme // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#ffffff", "#011627"], // White, Background + Neutrals = ["#c3ccdc", "#011627"], // White, Background Primary = "#82aaff", // Blue Alternate = "#c792ea", // Purple - Success = "#addb67", // Green - CallToAction = "#addb67", // Green + Success = "#a1cd5e", // Green + CallToAction = "#a1cd5e", // Green Information = "#7fdbca", // Cyan Caution = "#f78c6c", // Orange Warning = "#e3d18a", // Yellow diff --git a/ThemeProvider/Themes/Nightfox/Dawnfox.cs b/ThemeProvider/Themes/Nightfox/Dawnfox.cs index e4e904a..30f8768 100644 --- a/ThemeProvider/Themes/Nightfox/Dawnfox.cs +++ b/ThemeProvider/Themes/Nightfox/Dawnfox.cs @@ -14,20 +14,20 @@ namespace ktsu.ThemeProvider.Themes.Nightfox; public class Dawnfox : ISemanticTheme { // Colors shared by several meanings are named once, after the palette entry they come from. - private const string Blue = "#56949f"; + private const string Cyan = "#56949f"; // Hex values are the palette this theme mirrors; the trailing comment on each line is // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#575279", "#f4ede4"], // Fg0, BgAlt - Primary = Blue, + Neutrals = ["#575279", "#ebe5df"], // Fg1, Bg0 + Primary = "#286983", // Blue Alternate = "#d685af", // Pink - Success = "#286983", // Green - CallToAction = Blue, - Information = Blue, - Caution = "#d7827e", // Yellow - Warning = "#ea9d34", // Orange + Success = "#618774", // Green + CallToAction = Cyan, + Information = Cyan, + Caution = "#ea9d34", // Yellow + Warning = "#d7827e", // Orange Error = "#b4637a", // Red Failure = "#b4637a", // Red Debug = "#907aa9", // Magenta diff --git a/ThemeProvider/Themes/Nightfox/Dayfox.cs b/ThemeProvider/Themes/Nightfox/Dayfox.cs index c370835..0acfa88 100644 --- a/ThemeProvider/Themes/Nightfox/Dayfox.cs +++ b/ThemeProvider/Themes/Nightfox/Dayfox.cs @@ -17,17 +17,17 @@ public class Dayfox : ISemanticTheme // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#1d344f", "#efeae6"], // Fg0, BgAlt + Neutrals = ["#3d2b5a", "#e4dcd4"], // Fg1, BgAlt Primary = "#2848a9", // Blue - Alternate = "#955f20", // Orange + Alternate = "#955f61", // Orange Success = "#396847", // Green CallToAction = "#287980", // Cyan Information = "#2848a9", // Blue - Caution = "#986936", // Yellow - Warning = "#955f20", // Orange + Caution = "#ac5402", // Yellow + Warning = "#955f61", // Orange Error = "#a5222f", // Red Failure = "#a5222f", // Red - Debug = "#7847bd", // Magenta + Debug = "#6e33ce", // Magenta }; /// diff --git a/ThemeProvider/Themes/Nightfox/Duskfox.cs b/ThemeProvider/Themes/Nightfox/Duskfox.cs index ead5c63..ab1f858 100644 --- a/ThemeProvider/Themes/Nightfox/Duskfox.cs +++ b/ThemeProvider/Themes/Nightfox/Duskfox.cs @@ -14,23 +14,23 @@ namespace ktsu.ThemeProvider.Themes.Nightfox; public class Duskfox : ISemanticTheme { // Colors shared by several meanings are named once, after the palette entry they come from. - private const string Blue = "#9ccfd8"; + private const string Blue = "#569fba"; // Hex values are the palette this theme mirrors; the trailing comment on each line is // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#e0def4", "#1a1826"], // Fg0, BgAlt + Neutrals = ["#e0def4", "#191726"], // Fg1, BgAlt Primary = Blue, Alternate = "#c4a7e7", // Magenta Success = "#a3be8c", // Green - CallToAction = Blue, // Cyan + CallToAction = "#9ccfd8", // Cyan Information = Blue, Caution = "#f6c177", // Yellow Warning = "#ea9a97", // Orange Error = "#eb6f92", // Red Failure = "#eb6f92", // Red - Debug = "#f5c2e7", // Pink + Debug = "#eb98c3", // Pink }; /// diff --git a/ThemeProvider/Themes/Nightfox/Nordfox.cs b/ThemeProvider/Themes/Nightfox/Nordfox.cs index 3a7f308..66bf5a2 100644 --- a/ThemeProvider/Themes/Nightfox/Nordfox.cs +++ b/ThemeProvider/Themes/Nightfox/Nordfox.cs @@ -24,7 +24,7 @@ public class Nordfox : ISemanticTheme CallToAction = "#88c0d0", // Cyan Information = "#81a1c1", // Blue Caution = "#ebcb8b", // Yellow - Warning = "#d08770", // Orange + Warning = "#c9826b", // Orange Error = "#bf616a", // Red Failure = "#bf616a", // Red Debug = "#b48ead", // Magenta diff --git a/ThemeProvider/Themes/Nightfox/Terafox.cs b/ThemeProvider/Themes/Nightfox/Terafox.cs index e2fe381..a89ac59 100644 --- a/ThemeProvider/Themes/Nightfox/Terafox.cs +++ b/ThemeProvider/Themes/Nightfox/Terafox.cs @@ -17,14 +17,14 @@ public class Terafox : ISemanticTheme // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#fbebd3", "#0f1c1e"], // Fg0, BgAlt + Neutrals = ["#e6eaea", "#0f1c1e"], // Fg1, BgAlt Primary = "#7aa4a1", // Green - Alternate = "#ffa500", // Orange + Alternate = "#ff8349", // Orange Success = "#7aa4a1", // Green CallToAction = "#a1cdd8", // Cyan Information = "#5a93aa", // Blue - Caution = "#fdb292", // Yellow - Warning = "#ffa500", // Orange + Caution = "#fda47f", // Yellow + Warning = "#ff8349", // Orange Error = "#e85c51", // Red Failure = "#e85c51", // Red Debug = "#ad5c7c", // Magenta diff --git a/ThemeProvider/Themes/OneDark/OneDark.cs b/ThemeProvider/Themes/OneDark/OneDark.cs index d9ae715..a79ee3b 100644 --- a/ThemeProvider/Themes/OneDark/OneDark.cs +++ b/ThemeProvider/Themes/OneDark/OneDark.cs @@ -16,7 +16,7 @@ public class OneDark : ISemanticTheme // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#ffffff", "#181a1f"], // White, Black + Neutrals = ["#abb2bf", "#181a1f"], // White, Black Primary = "#61afef", // Blue Alternate = "#c678dd", // Purple Success = "#98c379", // Green diff --git a/ThemeProvider/Themes/PaperColor/PaperColorDark.cs b/ThemeProvider/Themes/PaperColor/PaperColorDark.cs index 28b5ee7..4a5bbdb 100644 --- a/ThemeProvider/Themes/PaperColor/PaperColorDark.cs +++ b/ThemeProvider/Themes/PaperColor/PaperColorDark.cs @@ -18,16 +18,16 @@ public class PaperColorDark : ISemanticTheme private static readonly SemanticPalette Palette = new() { Neutrals = ["#d0d0d0", "#1c1c1c"], // Fg0, Background - Primary = "#0087d7", // Blue + Primary = "#5fafd7", // Blue Alternate = "#af87d7", // Purple Success = "#5faf00", // Green CallToAction = "#00afaf", // Teal - Information = "#0087d7", // Blue + Information = "#5fafd7", // Blue Caution = "#ffaf00", // Yellow Warning = "#ff8700", // Orange Error = "#af005f", // Red Failure = "#af005f", // Red - Debug = "#d70087", // Pink + Debug = "#ff5faf", // Pink }; /// diff --git a/ThemeProvider/Themes/PaperColor/PaperColorLight.cs b/ThemeProvider/Themes/PaperColor/PaperColorLight.cs index e953b7b..6213d15 100644 --- a/ThemeProvider/Themes/PaperColor/PaperColorLight.cs +++ b/ThemeProvider/Themes/PaperColor/PaperColorLight.cs @@ -17,7 +17,7 @@ public class PaperColorLight : ISemanticTheme // that palette's own name for the color. private static readonly SemanticPalette Palette = new() { - Neutrals = ["#444444", "#ffffff"], // Fg0, BgAlt + Neutrals = ["#444444", "#eeeeee"], // Color07, Color00 Primary = "#0087af", // Blue Alternate = "#8700af", // Purple Success = "#008700", // Green diff --git a/ThemeProvider/Themes/VSCode/VSCodeDark.cs b/ThemeProvider/Themes/VSCode/VSCodeDark.cs index 9b4280b..246f955 100644 --- a/ThemeProvider/Themes/VSCode/VSCodeDark.cs +++ b/ThemeProvider/Themes/VSCode/VSCodeDark.cs @@ -21,11 +21,11 @@ public class VSCodeDark : ISemanticTheme Alternate = "#c586c0", // Purple Success = "#b5cea8", // Number CallToAction = "#b5cea8", // Number - Information = "#75beff", // Info + Information = "#59a4f9", // EditorInfo Caution = "#ce9178", // StringColor - Warning = "#ffcc02", // Warning - Error = "#f44747", // Error - Failure = "#f44747", // Error + Warning = "#cca700", // EditorWarning + Error = "#f14c4c", // EditorError + Failure = "#f14c4c", // EditorError Debug = "#c586c0", // Purple }; diff --git a/ThemeProvider/Themes/VSCode/VSCodeLight.cs b/ThemeProvider/Themes/VSCode/VSCodeLight.cs index b96c4d7..054d746 100644 --- a/ThemeProvider/Themes/VSCode/VSCodeLight.cs +++ b/ThemeProvider/Themes/VSCode/VSCodeLight.cs @@ -21,11 +21,11 @@ public class VSCodeLight : ISemanticTheme Alternate = "#af00db", // Purple Success = "#098658", // Number CallToAction = "#098658", // Number - Information = "#316bcd", // Info + Information = "#0063d3", // EditorInfo Caution = "#a31515", // StringColor - Warning = "#bf8803", // Warning - Error = "#cd3131", // Error - Failure = "#cd3131", // Error + Warning = "#bf8803", // EditorWarning + Error = "#e51400", // EditorError + Failure = "#e51400", // EditorError Debug = "#af00db", // Purple }; diff --git a/tests/ThemeProvider.UITests/Gallery/SampleWindow.cs b/tests/ThemeProvider.UITests/Gallery/SampleWindow.cs index 9168d0f..810e0bb 100644 --- a/tests/ThemeProvider.UITests/Gallery/SampleWindow.cs +++ b/tests/ThemeProvider.UITests/Gallery/SampleWindow.cs @@ -59,7 +59,9 @@ internal void Draw() ImGui.SetNextWindowFocus(); if (ImGui.Begin(info.Name, ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoSavedSettings)) { - ImGui.TextDisabled($"{info.Family} / {info.Variant} / {(info.IsDark ? "dark" : "light")}"); + ImGui.TextDisabled(string.IsNullOrEmpty(info.Variant) + ? $"{info.Family} / {(info.IsDark ? "dark" : "light")}" + : $"{info.Family} / {info.Variant} / {(info.IsDark ? "dark" : "light")}"); ImGui.Separator(); if (ImGui.BeginTable("##layout", 2, ImGuiTableFlags.None))