ktsu.ThemeProvider 1.0.17

ktsu.ThemeProvider

A semantic color theming library for .NET applications with 44+ themes, intelligent color mapping, and framework integration.

License NuGet Version NuGet Version NuGet Downloads GitHub commit activity GitHub contributors GitHub Actions Workflow Status

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 44 carefully crafted themes from popular color schemes and provides built-in Dear ImGui integration with an extensible architecture for other UI frameworks.

Features

  • Semantic Color System: Define colors by purpose (Primary, Error, Warning, Neutral) and priority level rather than specific hues, enabling consistent theming across any UI framework
  • 44 Built-in Themes: Includes Catppuccin, Tokyo Night, Gruvbox, Everforest, Nightfox, Kanagawa, PaperColor, Nord, Dracula, VSCode, One Dark, Monokai, and Nightfly theme families
  • Centralized Theme Registry: Discover, filter, and instantiate themes by name, family, or light/dark classification with rich metadata
  • Dear ImGui Integration: Companion package ktsu.ThemeProvider.ImGui provides complete ImGui color palette mapping via ImGuiPaletteMapper
  • Perceptual Color Science: Uses Oklab perceptual color space for uniform color interpolation, extrapolation, and lightness-based priority mapping
  • WCAG Accessibility: Built-in contrast ratio calculations, accessibility level checking (AA/AAA), and automatic color adjustment to meet WCAG standards
  • Extensible Framework Mappers: Implement IPaletteMapper<TColorKey, TColorValue> to integrate with any UI framework
  • Priority-Based Color Hierarchy: Seven priority levels (VeryLow to VeryHigh) automatically mapped to appropriate lightness values, with theme-aware ordering for dark and light themes
  • Multi-Target Support: Targets .NET 5.0 through 10.0, plus .NET Standard 2.0 and 2.1

Installation

Package Manager Console

Install-Package ktsu.ThemeProvider

.NET CLI

dotnet add package ktsu.ThemeProvider

Package Reference

<PackageReference Include="ktsu.ThemeProvider" Version="x.y.z" />

For Dear ImGui integration, also install:

dotnet add package ktsu.ThemeProvider.ImGui

Usage Examples

Basic Example

using ktsu.ThemeProvider;
using static ktsu.ThemeProvider.ThemeRegistry;

// Create a theme directly
var theme = new Themes.Catppuccin.Mocha();

// Or find and create via the registry
ThemeInfo? themeInfo = FindTheme("Catppuccin Mocha");
ISemanticTheme? registryTheme = themeInfo?.CreateInstance();

// Map semantic color requests to actual colors
var requests = new[]
{
    new SemanticColorRequest(SemanticMeaning.Primary, Priority.Medium),
    new SemanticColorRequest(SemanticMeaning.Error, Priority.High),
    new SemanticColorRequest(SemanticMeaning.Neutral, Priority.VeryLow),
};
IReadOnlyDictionary<SemanticColorRequest, PerceptualColor> colors =
    SemanticColorMapper.MapColors(requests, theme);

Theme Discovery with the Registry

using ktsu.ThemeProvider;
using static ktsu.ThemeProvider.ThemeRegistry;

// Browse all themes
IReadOnlyList<ThemeInfo> allThemes = AllThemes;
IReadOnlyList<ThemeInfo> darkThemes = DarkThemes;
IReadOnlyList<ThemeInfo> lightThemes = LightThemes;

// Browse by family
IReadOnlyList<string> families = Families;
IReadOnlyList<ThemeInfo> catppuccinThemes = GetThemesInFamily("Catppuccin");

// Find a specific theme by name (case-insensitive)
ThemeInfo? themeInfo = FindTheme("Tokyo Night Storm");
ISemanticTheme? theme = themeInfo?.CreateInstance();

// Create all theme instances at once
IReadOnlyList<ISemanticTheme> allInstances = CreateAllThemeInstances();
IReadOnlyList<ISemanticTheme> gruvboxInstances = CreateThemeInstancesInFamily("Gruvbox");

Complete Palette Generation

using ktsu.ThemeProvider;

var theme = new Themes.Nord.Nord();

// Generate the complete palette (all meaning + priority combinations)
IReadOnlyDictionary<SemanticColorRequest, PerceptualColor> completePalette =
    SemanticColorMapper.MakeCompletePalette(theme);

// Access any color from the palette
var primaryMedium = completePalette[new SemanticColorRequest(SemanticMeaning.Primary, Priority.Medium)];
RgbColor rgb = primaryMedium.RgbValue;
string hex = rgb.ToHex();

Dear ImGui Integration

using ktsu.ThemeProvider;
using ktsu.ThemeProvider.ImGui;
using Hexa.NET.ImGui;

// Create theme and mapper
var theme = new Themes.Catppuccin.Mocha();
var mapper = new ImGuiPaletteMapper();

// Get complete ImGui color palette
IReadOnlyDictionary<ImGuiCol, Vector4> imguiColors = mapper.MapTheme(theme);

// Apply to ImGui style
var style = ImGui.GetStyle();
foreach ((ImGuiCol colorKey, Vector4 colorValue) in imguiColors)
{
    style.Colors[(int)colorKey] = colorValue;
}

Accessibility Checking

using ktsu.ThemeProvider;

var foreground = RgbColor.FromHex("#FFFFFF");
var background = RgbColor.FromHex("#1E1E2E");

// Calculate contrast ratio
float contrastRatio = ColorMath.GetContrastRatio(foreground, background);

// Check WCAG compliance
AccessibilityLevel level = ColorMath.GetAccessibilityLevel(foreground, background, isLargeText: false);

// Adjust a color to meet accessibility requirements
RgbColor adjusted = ColorMath.AdjustForAccessibility(foreground, background, AccessibilityLevel.AA);

// Create perceptually uniform gradients
RgbColor[] gradient = ColorMath.CreateGradient(foreground, background, steps: 10);

Advanced Usage

Creating Custom Framework Mappers

Implement IPaletteMapper<TColorKey, TColorValue> to integrate with any UI framework:

using ktsu.ThemeProvider;

public class MyFrameworkMapper : IPaletteMapper<MyColorEnum, MyColorType>
{
    public string FrameworkName => "My UI Framework";

    public IReadOnlyDictionary<MyColorEnum, MyColorType> MapTheme(ISemanticTheme theme)
    {
        var requests = new Dictionary<MyColorEnum, SemanticColorRequest>
        {
            { MyColorEnum.Button, new(SemanticMeaning.Primary, Priority.Medium) },
            { MyColorEnum.Background, new(SemanticMeaning.Neutral, Priority.VeryLow) },
            { MyColorEnum.ErrorText, new(SemanticMeaning.Error, Priority.High) },
        };

        var palette = SemanticColorMapper.MapColors(requests.Values, theme);

        var result = new Dictionary<MyColorEnum, MyColorType>();
        foreach (var kvp in requests)
        {
            if (palette.TryGetValue(kvp.Value, out var color))
            {
                result[kvp.Key] = ConvertToMyColor(color.RgbValue);
            }
        }
        return result;
    }
}

Creating Custom Themes

Implement ISemanticTheme with colors from your palette:

using ktsu.ThemeProvider;
using System.Collections.ObjectModel;

public class MyCustomTheme : ISemanticTheme
{
    private static readonly PerceptualColor Background = PerceptualColor.FromRgb("#1A1B26");
    private static readonly PerceptualColor Foreground = PerceptualColor.FromRgb("#C0CAF5");
    private static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#7AA2F7");
    private static readonly PerceptualColor Green = PerceptualColor.FromRgb("#9ECE6A");
    private static readonly PerceptualColor Red = PerceptualColor.FromRgb("#F7768E");

    public bool IsDarkTheme => true;

    public Dictionary<SemanticMeaning, Collection<PerceptualColor>> SemanticMapping { get; } = new()
    {
        { SemanticMeaning.Neutral, new() { Background, Foreground } },
        { SemanticMeaning.Primary, new() { Blue } },
        { SemanticMeaning.Success, new() { Green } },
        { SemanticMeaning.Error, new() { Red } },
    };
}

API Reference

SemanticMeaning (enum)

Defines semantic color purposes.

Value Description
Neutral Backgrounds, borders, inactive elements
Primary Main brand/accent colors
Alternate Secondary accent, binary choice emphasis
Success Successful operations, confirmations
CallToAction Important buttons and highlights demanding attention
Information Informational content, help text
Caution Cautionary content needing attention
Warning Warning states, potentially problematic
Error Error states, incorrect conditions
Failure Failed operations (distinct from error)
Debug Debug/development information

Priority (enum)

Controls color intensity and lightness within a semantic meaning.

Value Description
VeryLow Lowest intensity (backgrounds in dark themes, lightest in light themes)
Low Low intensity
MediumLow Below-medium intensity
Medium Default intensity level
MediumHigh Above-medium intensity
High High intensity
VeryHigh Highest intensity (foreground text in dark themes, darkest in light themes)

SemanticColorRequest

A readonly record struct combining a SemanticMeaning and Priority to specify a color.

Property Type Description
Meaning SemanticMeaning The semantic purpose of the color
Priority Priority The intensity/lightness level

SemanticColorMapper

Static class that maps semantic color requests to actual colors.

Methods

Name Return Type Description
MapColors(requests, theme) IReadOnlyDictionary<SemanticColorRequest, PerceptualColor> Maps a collection of requests to colors using the theme
MakeCompletePalette(theme) IReadOnlyDictionary<SemanticColorRequest, PerceptualColor> Generates all possible meaning+priority combinations for a theme

ThemeRegistry

Static class providing centralized theme discovery and management.

Properties

Name Type Description
AllThemes IReadOnlyList<ThemeInfo> All 44 registered themes with metadata
DarkThemes IReadOnlyList<ThemeInfo> All dark themes
LightThemes IReadOnlyList<ThemeInfo> All light themes
Families IReadOnlyList<string> All theme family names
ThemesByFamily IReadOnlyDictionary<string, IReadOnlyList<ThemeInfo>> Themes grouped by family

Methods

Name Return Type Description
FindTheme(name) ThemeInfo? Finds a theme by name (case-insensitive)
GetThemesInFamily(family) IReadOnlyList<ThemeInfo> Gets all themes in a family
CreateAllThemeInstances() IReadOnlyList<ISemanticTheme> Creates instances of all themes
CreateThemeInstancesInFamily(family) IReadOnlyList<ISemanticTheme> Creates instances of themes in a family

ColorMath

Static class providing color space conversions and accessibility utilities.

Methods

Name Return Type Description
RgbToOklab(rgb) OklabColor Converts linear RGB to Oklab color space
OklabToRgb(oklab) RgbColor Converts Oklab to linear RGB color space
GetRelativeLuminance(rgb) float Calculates WCAG relative luminance
GetContrastRatio(color1, color2) float Calculates WCAG contrast ratio (1:1 to 21:1)
GetAccessibilityLevel(fg, bg, isLargeText) AccessibilityLevel Checks WCAG AA/AAA compliance
AdjustForAccessibility(fg, bg, level, isLargeText) RgbColor Adjusts color to meet WCAG requirements
CreateGradient(from, to, steps) RgbColor[] Creates a perceptually uniform gradient

PerceptualColor

Readonly record struct representing a color with perceptual properties in Oklab space.

Properties

Name Type Description
OklabValue OklabColor The color in Oklab perceptual space
RgbValue RgbColor The RGB representation
Hue float Hue in Oklab polar coordinates
Chroma float Chroma (colorfulness) in Oklab polar coordinates
Lightness float Lightness in Oklab space

Methods

Name Return Type Description
FromRgb(RgbColor) PerceptualColor Creates from an RGB color
FromRgb(string hex) PerceptualColor Creates from a hex color string
SemanticDistanceTo(other) float Calculates perceptual distance to another color

RgbColor

Readonly record struct representing a linear RGB color with float precision.

Methods

Name Return Type Description
FromBytes(r, g, b) RgbColor Creates from 8-bit values (0-255)
FromHex(hex) RgbColor Creates from hex string (e.g., "#FF0000")
ToHex() string Converts to hex string
ToBytes() (byte R, byte G, byte B) Converts to 8-bit values
ToSRgb() SRgbColor Converts to sRGB gamma-corrected values

IPaletteMapper<TColorKey, TColorValue>

Interface for mapping semantic themes to framework-specific color palettes.

Properties

Name Type Description
FrameworkName string The name of the target UI framework

Methods

Name Return Type Description
MapTheme(theme) IReadOnlyDictionary<TColorKey, TColorValue> Maps a theme to a framework-specific palette

Available Themes

Family Variants Description
Catppuccin Latte, Frappe, Macchiato, Mocha Warm pastel themes with excellent readability
Tokyo Night Night, Storm, Day Clean themes inspired by Tokyo's neon nights
Gruvbox Dark, Dark Hard, Dark Soft, Light, Light Hard, Light Soft Retro groove colors with warm backgrounds
Everforest Dark, Dark Hard, Dark Soft, Light, Light Hard, Light Soft Green forest colors for comfortable viewing
Nightfox Nightfox, Dayfox, Duskfox, Nordfox, Terafox, Carbonfox, Dawnfox Fox-inspired vibrant themes
Kanagawa Wave, Dragon, Lotus Japanese-inspired themes
PaperColor Light, Dark Material Design inspired themes
VSCode Dark, Light Microsoft VSCode default themes
Nord - Arctic-inspired theme with cool blue tones
Dracula - Gothic theme with purple and pink accents
One Dark - Atom's iconic One Dark theme
Monokai - Classic Monokai with vibrant colors
Nightfly - Dark blue theme inspired by night flying

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

License

This project is licensed under the MIT License. See the LICENSE.md file for details.

Showing the top 20 packages that depend on ktsu.ThemeProvider.

Packages Downloads
ktsu.ThemeProvider.ImGui
A semantic color theming library for .NET applications that provides 44+ beautiful themes with intelligent color mapping, framework integration, and accessibility-first design. Features include theme discovery through a centralized registry, semantic color specifications (meaning + priority instead of hardcoded colors), built-in Dear ImGui support, and advanced color science with perceptually uniform color spaces.
162
ktsu.ThemeProvider.ImGui
A semantic color theming library for .NET applications that provides 44+ beautiful themes with intelligent color mapping, framework integration, and accessibility-first design. Features include theme discovery through a centralized registry, semantic color specifications (meaning + priority instead of hardcoded colors), built-in Dear ImGui support, and advanced color science with perceptually uniform color spaces.
161
ktsu.ThemeProvider.ImGui
A semantic color theming library for .NET applications that provides 44+ beautiful themes with intelligent color mapping, framework integration, and accessibility-first design. Features include theme discovery through a centralized registry, semantic color specifications (meaning + priority instead of hardcoded colors), built-in Dear ImGui support, and advanced color science with perceptually uniform color spaces.
160
ktsu.ThemeProvider.ImGui
A semantic color theming library for .NET applications that provides 44+ beautiful themes with intelligent color mapping, framework integration, and accessibility-first design. Features include theme discovery through a centralized registry, semantic color specifications (meaning + priority instead of hardcoded colors), built-in Dear ImGui support, and advanced color science with perceptually uniform color spaces.
155
ktsu.ThemeProvider.ImGui
A semantic color theming library for .NET applications that provides 44+ beautiful themes with intelligent color mapping, framework integration, and accessibility-first design. Features include theme discovery through a centralized registry, semantic color specifications (meaning + priority instead of hardcoded colors), built-in Dear ImGui support, and advanced color science with perceptually uniform color spaces.
154
ktsu.ImGui.Styler
Package Description
153
ktsu.ImGui.Styler
Package Description
150
ktsu.ImGui.Styler
Package Description
148
ktsu.ImGui.Styler
Package Description
146
ktsu.ImGui.Styler
Package Description
145
ktsu.ImGui.Styler
Package Description
93
ktsu.ImGui.Styler
Package Description
65
ktsu.ImGui.Styler
Package Description
64
ktsu.ImGui.Styler
Package Description
63
ktsu.ImGui.Styler
A library for expressively styling ImGui.NET interfaces.
63
ktsu.ImGui.Styler
Package Description
62

## v1.0.17 (patch) Changes since v1.0.16: - Update documentation in CLAUDE.md and README.md; add TAGS.md for semantic keywords ([@matt-edmondson](https://github.com/matt-edmondson)) - Add SonarLint configuration for connected mode ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.17-pre.1 (prerelease) Changes since v1.0.16: - Sync .github\workflows\dotnet.yml ([@KtsuTools](https://github.com/KtsuTools)) ## v1.0.16 (patch) Changes since v1.0.15: - Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot])) ## v1.0.16-pre.1 (prerelease) No significant changes detected since v1.0.16. ## v1.0.15 (patch) Changes since v1.0.14: - Remove legacy build scripts ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.14 (patch) Changes since v1.0.13: - Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot])) - Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot])) - Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot])) - Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot])) - Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync COPYRIGHT.md ([@ktsu[bot]](https://github.com/ktsu[bot])) - Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync COPYRIGHT.md ([@ktsu[bot]](https://github.com/ktsu[bot])) ## v1.0.14-pre.7 (prerelease) Changes since v1.0.14-pre.6: - Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot])) ## v1.0.14-pre.6 (prerelease) Changes since v1.0.14-pre.5: - Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot])) ## v1.0.14-pre.5 (prerelease) Changes since v1.0.14-pre.4: - Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot])) ## v1.0.14-pre.4 (prerelease) Changes since v1.0.14-pre.3: - Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot])) ## v1.0.14-pre.3 (prerelease) Changes since v1.0.14-pre.2: - Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync COPYRIGHT.md ([@ktsu[bot]](https://github.com/ktsu[bot])) ## v1.0.14-pre.2 (prerelease) Changes since v1.0.14-pre.1: - Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot])) ## v1.0.14-pre.1 (prerelease) No significant changes detected since v1.0.14. ## v1.0.13 (patch) Changes since v1.0.12: - Remove .github\workflows\project.yml ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.12 (patch) Changes since v1.0.11: - Refactor null check in MapTheme method to use Ensure.NotNull ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.11 (patch) Changes since v1.0.10: - Migrate to dotnet 10 ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.11-pre.4 (prerelease) Changes since v1.0.11-pre.3: - Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync .github\workflows\update-sdks.yml ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot])) ## v1.0.11-pre.3 (prerelease) Changes since v1.0.11-pre.2: - Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot])) ## v1.0.11-pre.2 (prerelease) Changes since v1.0.11-pre.1: - Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot])) - Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot])) ## v1.0.11-pre.1 (prerelease) No significant changes detected since v1.0.11. ## v1.0.10 (patch) Changes since v1.0.9: - Refactor SonarQube scanner steps and update coverage report paths in CI workflow ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.9 (patch) Changes since v1.0.8: - Update sdk ([@matt-edmondson](https://github.com/matt-edmondson)) - Update package versions and refactor theme provider interfaces ([@matt-edmondson](https://github.com/matt-edmondson)) - Update ktsu.ImGuiApp package version to 2.1.0 ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.9-pre.3 (prerelease) Changes since v1.0.9-pre.2: - Update package versions and refactor theme provider interfaces ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.9-pre.2 (prerelease) Changes since v1.0.9-pre.1: - Bump the ktsu group with 1 update ([@dependabot[bot]](https://github.com/dependabot[bot])) ## v1.0.9-pre.1 (prerelease) No significant changes detected since v1.0.9. ## v1.0.8 (patch) Changes since v1.0.7: - Refactor method name for palette generation in SemanticColorMapper ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.7 (patch) Changes since v1.0.6: - Add complete palette generation and improve ImGui color mapping ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.6 (patch) Changes since v1.0.5: - [patch] Force patch ([@matt-edmondson](https://github.com/matt-edmondson)) - Update package versions and UI color mappings ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.6-pre.1 (prerelease) No significant changes detected since v1.0.6. ## v1.0.5 (patch) Changes since v1.0.4: - Upgrade ktsu.Sdk to version 1.49.0 ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.4 (patch) Changes since v1.0.3: - Add ThemeRegistry and update documentation for ThemeProvider ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.3 (patch) Changes since v1.0.2: - Add new themes: Everforest Dark Hard, Everforest Dark Soft, Everforest Light Hard, and Everforest Light Soft ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.2 (patch) Changes since v1.0.1: - Refactor Catppuccin, Dracula, and other themes to streamline Neutrals collection ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.1 (patch) Changes since v1.0.0: - Add new themes: Dracula, Everforest, Gruvbox, Monokai, Nightfly, One Dark, Tokyo Night, and VSCode ([@matt-edmondson](https://github.com/matt-edmondson)) ## v1.0.0 (major) - Add Catppuccin themes: Frappe, Latte, and Macchiato implementations ([@matt-edmondson](https://github.com/matt-edmondson)) - Refactor ThemeProviderDemo to enhance semantic color grid rendering ([@matt-edmondson](https://github.com/matt-edmondson)) - Refactor ImGuiPaletteMapper for improved priority distribution and contrast ([@matt-edmondson](https://github.com/matt-edmondson)) - Refactor SemanticColorMapper and ThemeProviderDemo for improved lightness calculations and semantic color handling ([@matt-edmondson](https://github.com/matt-edmondson)) - Enhance SemanticColorMapper and ImGuiPaletteMapper for improved color contrast and priority handling ([@matt-edmondson](https://github.com/matt-edmondson)) - Enhance SemanticColorMapper and ThemeProviderDemo for complete semantic color mapping ([@matt-edmondson](https://github.com/matt-edmondson)) - Enhance color extrapolation logic in SemanticColorMapper ([@matt-edmondson](https://github.com/matt-edmondson)) - Refactor SemanticColorMapper for improved lightness-based color mapping ([@matt-edmondson](https://github.com/matt-edmondson)) - Add ColorRange and SemanticColorMapper classes for enhanced color interpolation and mapping ([@matt-edmondson](https://github.com/matt-edmondson)) - Add new semantic color system and Catppuccin Mocha theme implementation ([@matt-edmondson](https://github.com/matt-edmondson)) - Refactor semantic color specifications to remove 'IsPrimary' property ([@matt-edmondson](https://github.com/matt-edmondson)) - Refactor ImGuiPaletteMapper to enhance semantic color usage ([@matt-edmondson](https://github.com/matt-edmondson)) - Implement ImGui palette mapping and enhance semantic color integration ([@matt-edmondson](https://github.com/matt-edmondson)) - Refactor ThemeProviderDemo to fully integrate semantic color system ([@matt-edmondson](https://github.com/matt-edmondson)) - Refactor ThemeProvider to implement semantic color system and Catppuccin Mocha theme ([@matt-edmondson](https://github.com/matt-edmondson)) - Enhance ThemeProviderDemo with UI improvements and semantic palette features ([@matt-edmondson](https://github.com/matt-edmondson)) - Add Catppuccin Mocha theme implementation and color management utilities ([@matt-edmondson](https://github.com/matt-edmondson))

Version Downloads Last updated
1.0.17 55 02/19/2026
1.0.17-pre.1 54 02/17/2026
1.0.16 55 02/16/2026
1.0.16-pre.1 55 02/16/2026
1.0.15 56 02/14/2026
1.0.14 55 02/14/2026
1.0.14-pre.7 57 02/06/2026
1.0.14-pre.6 57 02/05/2026
1.0.14-pre.5 58 02/03/2026
1.0.14-pre.4 59 02/01/2026
1.0.14-pre.3 58 01/31/2026
1.0.14-pre.2 60 01/31/2026
1.0.14-pre.1 58 01/31/2026
1.0.13 57 01/30/2026
1.0.12 61 01/28/2026
1.0.11 61 01/27/2026
1.0.11-pre.4 62 01/24/2026
1.0.11-pre.3 151 11/24/2025
1.0.11-pre.2 151 11/23/2025
1.0.11-pre.1 148 11/23/2025
1.0.10 148 11/23/2025
1.0.9 153 09/04/2025
1.0.9-pre.3 153 08/25/2025