FractalDataWorks.UI.Themes
0.1.0-preview.11
dotnet add package FractalDataWorks.UI.Themes --version 0.1.0-preview.11
NuGet\Install-Package FractalDataWorks.UI.Themes -Version 0.1.0-preview.11
<PackageReference Include="FractalDataWorks.UI.Themes" Version="0.1.0-preview.11" />
<PackageVersion Include="FractalDataWorks.UI.Themes" Version="0.1.0-preview.11" />
<PackageReference Include="FractalDataWorks.UI.Themes" />
paket add FractalDataWorks.UI.Themes --version 0.1.0-preview.11
#r "nuget: FractalDataWorks.UI.Themes, 0.1.0-preview.11"
#:package FractalDataWorks.UI.Themes@0.1.0-preview.11
#addin nuget:?package=FractalDataWorks.UI.Themes&version=0.1.0-preview.11&prerelease
#tool nuget:?package=FractalDataWorks.UI.Themes&version=0.1.0-preview.11&prerelease
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
MenuThemes
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
MenuThemeBaseand applying[TypeOption] - Custom color palettes should inherit from
ColorPaletteBaseand apply[TypeOption(typeof(ColorPalettes), "Name")]
See Also
| Product | Versions 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. |
-
.NETStandard 2.0
- FractalDataWorks.Collections (>= 0.1.0-preview.11)
- Spectre.Console (>= 0.54.1-alpha.0.7)
- System.Collections.Immutable (>= 10.0.1)
-
net10.0
- FractalDataWorks.Collections (>= 0.1.0-preview.11)
- Spectre.Console (>= 0.54.1-alpha.0.7)
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 |