FractalDataWorks.UI.Themes 0.1.0-preview.11

This is a prerelease version of FractalDataWorks.UI.Themes.
dotnet add package FractalDataWorks.UI.Themes --version 0.1.0-preview.11
                    
NuGet\Install-Package FractalDataWorks.UI.Themes -Version 0.1.0-preview.11
                    
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="FractalDataWorks.UI.Themes" Version="0.1.0-preview.11" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FractalDataWorks.UI.Themes" Version="0.1.0-preview.11" />
                    
Directory.Packages.props
<PackageReference Include="FractalDataWorks.UI.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 FractalDataWorks.UI.Themes --version 0.1.0-preview.11
                    
#r "nuget: FractalDataWorks.UI.Themes, 0.1.0-preview.11"
                    
#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 FractalDataWorks.UI.Themes@0.1.0-preview.11
                    
#: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=FractalDataWorks.UI.Themes&version=0.1.0-preview.11&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=FractalDataWorks.UI.Themes&version=0.1.0-preview.11&prerelease
                    
Install as a Cake Tool

FractalDataWorks.UI.Themes

Theme system for FractalDataWorks UI components using TypeCollections.

Overview

This package provides a theming system built on TypeCollections. Themes combine color palettes, border styles, and icon sets into visual configurations. Theme components are referenced by Id for persistence.

TypeCollections

Pre-configured theme combinations:

Theme Colors Borders Icons
Dark DarkColorPalette RoundedBorderStyle UnicodeIconSet
Light LightColorPalette RoundedBorderStyle UnicodeIconSet
HighContrast HighContrastColorPalette AsciiBorderStyle AsciiIconSet

ColorPalettes

Palette Description
Dark Dark background with light text
Light Light background with dark text
HighContrast Maximum contrast for accessibility

BorderStyles

Style Description
Rounded Rounded corners (Unicode box-drawing)
Square Square corners (Unicode box-drawing)
Ascii ASCII characters only

IconSets

Set Description
Unicode Rich Unicode symbols
Ascii ASCII-only fallback

Usage

Get Theme by Name

From IMenuTheme.cs:24-30:

// Theme provides resolved components via properties
IColorPalette Colors { get; }
IBorderStyle Borders { get; }
IIconSet Icons { get; }

Access a theme using the TypeCollection lookup:

var theme = MenuThemes.ByName("Dark");
var colors = theme.Colors;
var borders = theme.Borders;
var icons = theme.Icons;

Custom Theme

From DarkMenuTheme.cs:8-27:

[TypeOption(typeof(MenuThemes), "Dark")]
public sealed class DarkMenuTheme : MenuThemeBase
{
    public DarkMenuTheme() : base(1, "Dark") { }

    public override string ThemeFamily => "Dark";

    public override int ColorPaletteId => 1;  // DarkColorPalette

    public override int BorderStyleId => 1;  // RoundedBorderStyle

    public override int IconSetId => 1;  // UnicodeIconSet
}

Custom themes follow the same pattern - override the Id properties to specify which components the theme uses:

[TypeOption(typeof(MenuThemes), "Corporate")]
public sealed class CorporateMenuTheme : MenuThemeBase
{
    public CorporateMenuTheme() : base(10, "Corporate") { }

    public override string ThemeFamily => "Corporate";

    public override int ColorPaletteId => 10;  // Custom palette Id

    public override int BorderStyleId => 2;   // SquareBorderStyle

    public override int IconSetId => 2;       // AsciiIconSet
}

Color Palette Properties

From IColorPalette.cs:21-76:

public interface IColorPalette : ITypeOption<int, ColorPaletteBase>
{
    Color Primary { get; }
    Color Secondary { get; }
    Color Background { get; }
    Color Foreground { get; }
    Color Muted { get; }
    Color Success { get; }
    Color Warning { get; }
    Color Error { get; }
    Color Info { get; }
    Color Focused { get; }
    Color Selected { get; }
    Color Disabled { get; }
    Color Hover { get; }
    Color InputBorder { get; }
    Color InputBorderFocused { get; }
    Color InputBorderError { get; }
    Color TableHeader { get; }
    Color TableRowAlternate { get; }
}

Icon Set Properties

From IIconSet.cs:9-46:

public interface IIconSet : ITypeOption<int, IconSetBase>
{
    string SelectedIndicator { get; }
    string UnselectedIndicator { get; }
    string CheckedIndicator { get; }
    string UncheckedIndicator { get; }
    string RequiredIndicator { get; }
    string SuccessIcon { get; }
    string ErrorIcon { get; }
    string WarningIcon { get; }
    string InfoIcon { get; }
    string ExpandedIcon { get; }
    string CollapsedIcon { get; }
    string LoadingIcon { get; }
}

Best Practices

  • Use TypeCollection lookups (MenuThemes.ByName(), MenuThemes.ById()) instead of direct instantiation
  • Reference theme components by Id for database persistence
  • Create custom themes by inheriting from MenuThemeBase and applying [TypeOption]
  • Custom color palettes should inherit from ColorPaletteBase and apply [TypeOption(typeof(ColorPalettes), "Name")]

See Also

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on FractalDataWorks.UI.Themes:

Package Downloads
FractalDataWorks.UI.Components.TUI

Development tools and utilities for the FractalDataWorks ecosystem. Build:

FractalDataWorks.UI.Rendering.Spectre

Development tools and utilities for the FractalDataWorks ecosystem. Build:

FractalDataWorks.TUI.Abstractions

Development tools and utilities for the FractalDataWorks ecosystem. Build:

FractalDataWorks.TUI.Management

Development tools and utilities for the FractalDataWorks ecosystem. Build:

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0-preview.11 37 1/12/2026
0.1.0-preview.10 37 1/12/2026
0.1.0-preview.9 45 1/9/2026
0.1.0-preview.7 67 1/7/2026