diff --git a/README.md b/README.md
index a0256d2..8d9828a 100644
--- a/README.md
+++ b/README.md
@@ -10,6 +10,8 @@
[](https://github.com/ktsu-dev/ThemeProvider/graphs/contributors)
[](https://github.com/ktsu-dev/ThemeProvider/actions)
+[](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))