Vestigium.Themes 1.1.0

dotnet add package Vestigium.Themes --version 1.1.0
                    
NuGet\Install-Package Vestigium.Themes -Version 1.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Vestigium.Themes" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Vestigium.Themes" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="Vestigium.Themes" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Vestigium.Themes --version 1.1.0
                    
#r "nuget: Vestigium.Themes, 1.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Vestigium.Themes@1.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Vestigium.Themes&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=Vestigium.Themes&version=1.1.0
                    
Install as a Cake Tool

Vestigium.Themes

Modular WPF theming for the Vestigium suite. One control language, many palettes, runtime swap without rebuilding the host.

Target: .NET 10 / WPF / Visual Studio 2026
Package: Vestigium.Themes 1.0.2 — one nupkg, eleven DLLs (core, catalog, nine palettes).
License: MIT — LICENSE.md

Verbose reference: _Documentation/DevelopersGuide_v1.0.md
Requirements: _Documentation/Requirements_v1.0.md

Consume

dotnet add package Vestigium.Themes --version 1.0.2

The package copies every palette DLL into the host output. You still register only the palettes the host will switch. NuGet does not call Register for you.

Call this in OnStartup before base.OnStartup / StartupUri parses the first window. Initialize merges metrics, the control catalog, then the requested palette.

using Vestigium.Themes;

protected override void OnStartup(StartupEventArgs e)
{
    var manager = new ThemeManager();

    // Register every palette you will offer. Copy the lines you need from the table below.
    manager.Register(ThemeDefinition.FromPack(
        "LightBlue", "Light Blue", "Vestigium.Themes.LightBlue", isDark: false,
        "Default Vestigium diagnostic chrome."));

    manager.Initialize(this, "LightBlue");
    base.OnStartup(e);
}

Later:

manager.SwitchTheme("Nord");

Views keep explicit styles. Colors inside those styles use {DynamicResource}:

<Button Style="{StaticResource Button.Primary}" Content="Save" />

Register each palette

FromPack(id, displayName, assemblyName, isDark, description?) builds:

pack://application:,,,/{assemblyName};component/Themes/Theme.xaml

The id must match Vestigium.Theme.Id inside that palette's Theme.xaml. Register each id once.

Palette Base Register
Light Blue Light see below
Dark Mode Dark see below
Terminal Dark see below
Solarized Dark Dark see below
Standard WPF Light see below
Monokai Dark see below
Sublime (Mariana) Dark see below
Dracula Dark see below
Nord Dark see below
manager.Register(ThemeDefinition.FromPack(
    "LightBlue", "Light Blue", "Vestigium.Themes.LightBlue", isDark: false,
    "Default Vestigium diagnostic chrome."));

manager.Register(ThemeDefinition.FromPack(
    "DarkMode", "Dark Mode", "Vestigium.Themes.DarkMode", isDark: true,
    "Low-glare dark surfaces."));

manager.Register(ThemeDefinition.FromPack(
    "Terminal", "Terminal", "Vestigium.Themes.Terminal", isDark: true,
    "Operator console."));

manager.Register(ThemeDefinition.FromPack(
    "SolarizedDark", "Solarized Dark", "Vestigium.Themes.SolarizedDark", isDark: true,
    "Calibrated Solarized Dark."));

manager.Register(ThemeDefinition.FromPack(
    "StandardWPF", "Standard WPF", "Vestigium.Themes.StandardWPF", isDark: false,
    "Platform-default approximation. Keys still resolve."));

manager.Register(ThemeDefinition.FromPack(
    "Monokai", "Monokai", "Vestigium.Themes.Monokai", isDark: true,
    "Wimer Monokai — pink accent on olive-black chrome."));

manager.Register(ThemeDefinition.FromPack(
    "Sublime", "Sublime", "Vestigium.Themes.Sublime", isDark: true,
    "Sublime Text Mariana — slate chrome, steel-blue accent."));

manager.Register(ThemeDefinition.FromPack(
    "Dracula", "Dracula", "Vestigium.Themes.Dracula", isDark: true,
    "Dracula — purple accent on midnight surfaces."));

manager.Register(ThemeDefinition.FromPack(
    "Nord", "Nord", "Vestigium.Themes.Nord", isDark: true,
    "Polar Night surfaces, Frost cyan accent."));

Register all nine if the host offers a full catalog. Register two if the product only switches Light Blue and Nord. Unregistered palettes are not loadable even though their DLLs are on disk.

StandardWPF is a palette. ThemeManager.Unload() is different — it drops Vestigium resources and Button.Primary stops resolving.

Projects

Project Role
Vestigium.Themes Contracts, ThemeManager, metrics
Vestigium.Themes.Controls Explicit styles bound to tokens
Nine Vestigium.Themes.* palettes XAML-only; identical keys, different values
Vestigium.Themes.Pack Pack-only bag — produces the NuGet package

Pack (maintainers)

dotnet pack src\Vestigium.Themes.Pack\Vestigium.Themes.Pack.csproj -c Release -o artifacts\nuget

Inspect lib/net10.0-windows7.0/. You want the eleven product DLLs and no Vestigium.Themes.Pack.dll. The nupkg root should also contain README.md and LICENSE.md.

dotnet nuget push artifacts\nuget\Vestigium.Themes.1.0.2.nupkg `
  --api-key $env:VESTIGIUM_NUGET_APIKEY `
  --source https://api.nuget.org/v3/index.json

Do not commit the API key. Do not pack from Vestigium.Themes.csproj — core does not reference palettes.

Product Compatible and additional computed target framework versions.
.NET net10.0-windows7.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.0 82 10/20/2026
1.0.6 108 10/2/2026
1.0.5 99 10/2/2026
1.0.4 102 10/2/2026
1.0.2 970 9/26/2026
1.0.1 106 9/26/2026
1.0.0 107 9/26/2026