Zafiro.Avalonia.Icons.Svg 51.2.0

dotnet add package Zafiro.Avalonia.Icons.Svg --version 51.2.0
                    
NuGet\Install-Package Zafiro.Avalonia.Icons.Svg -Version 51.2.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="Zafiro.Avalonia.Icons.Svg" Version="51.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Zafiro.Avalonia.Icons.Svg" Version="51.2.0" />
                    
Directory.Packages.props
<PackageReference Include="Zafiro.Avalonia.Icons.Svg" />
                    
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 Zafiro.Avalonia.Icons.Svg --version 51.2.0
                    
#r "nuget: Zafiro.Avalonia.Icons.Svg, 51.2.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 Zafiro.Avalonia.Icons.Svg@51.2.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=Zafiro.Avalonia.Icons.Svg&version=51.2.0
                    
Install as a Cake Addin
#tool nuget:?package=Zafiro.Avalonia.Icons.Svg&version=51.2.0
                    
Install as a Cake Tool

Zafiro.Avalonia

NuGet NuGet Downloads License: MIT

A UI components library for Avalonia 11.3.x that provides controls, dialogs, behaviors, and helpers for desktop, mobile, and browser applications. Built with ReactiveUI, a strong functional-reactive orientation (Result<T>, Maybe<T>, IObservable<T>), and absolute respect for the MVVM pattern — no logic in views, no UI in ViewModels.

Packages

Package NuGet Description
Zafiro.Avalonia NuGet Core controls, panels, behaviors, converters, and helpers
Zafiro.Avalonia.Dialogs NuGet Dialog system for desktop and mobile
Zafiro.Avalonia.DataViz NuGet Data visualization (heatmaps, dendrograms, graphs)
Zafiro.Avalonia.Generators NuGet Source generator for view locators and section registration
Zafiro.Avalonia.Icons.Projektanker NuGet Icon provider using Projektanker (FontAwesome, Material Design)
Zafiro.Avalonia.Icons.Svg NuGet SVG-based icon provider

Getting Started

dotnet add package Zafiro.Avalonia

For dialogs:

dotnet add package Zafiro.Avalonia.Dialogs

For auto-generated view locators and section registrations (recommended):

dotnet add package Zafiro.Avalonia.Generators

Quick Start

Application Bootstrap with Connect

Wire up your app in one line — works on Desktop, Mobile, and Browser:

public override void OnFrameworkInitializationCompleted()
{
    this.Connect(() => new MainView(), view => CompositionRoot.Create(view), () => new MainWindow());
    base.OnFrameworkInitializationCompleted();
}

Connect handles IClassicDesktopStyleApplicationLifetime and ISingleViewApplicationLifetime automatically, so the same code runs everywhere.

Shell, Sections, and Navigation

A section-based navigation system integrated with Microsoft.Extensions.DependencyInjection:

ServiceCollection services = new();

services.AddSingleton<IShell, Shell>();
services.AddSingleton(DialogService.Create());
services.AddScoped<INavigator>(provider => new Navigator(provider, logger, RxApp.MainThreadScheduler));
services.AddAllSectionsFromAttributes(logger); // auto-discovers [Section] ViewModels
services.AddTransient<MainViewModel>();

var serviceProvider = services.BuildServiceProvider();
return serviceProvider.GetRequiredService<MainViewModel>();

Combined with Zafiro.Avalonia.Generators, sections are discovered from [Section] attributes and registered automatically.

Dialogs and Wizards

Dialogs that work on both desktop and mobile:

Result<Maybe<T>> result = await dialog.ShowAndGetResult(viewModel, "Title");

https://github.com/SuperJMN-Zafiro/Zafiro.Avalonia/assets/3109851/d3d29a3e-3a35-4b27-abe0-14d95405c651

Build multi-step wizards declaratively with SlimWizard:

var wizard = WizardBuilder
    .StartWith(() => new Page1ViewModel(), "Step 1")
        .NextWith(model => model.Continue.Enhance("Next"))
    .Then(result => new Page2ViewModel(result), "Step 2")
        .NextWhenValid((vm, prev) => Result.Success(vm.Text!))
    .WithCompletionFinalStep();

https://github.com/SuperJMN-Zafiro/Zafiro.Avalonia/assets/3109851/47dad47a-af35-489c-83b7-0a7c853879f7

EnhancedCommand

Wraps ReactiveCommand with UX metadata (text, icon, name) and busy state — distinguishing between busy (executing) and disabled (can't execute) via IEnhancedCommand:

var command = ReactiveCommand.CreateFromTask(() => DoSomething());
var enhanced = command.Enhance("Save", name: "save");
// enhanced.IsBusy tracks execution; enhanced.CanExecute tracks enablement

View Locators

Automatically resolves Views for ViewModels by naming convention (MainViewModelMainView) and by x:DataType discovery via source generators:

DataTemplates.Add(new NamingConventionViewLocator());

With Zafiro.Avalonia.Generators, x:DataType declarations in .axaml files are discovered at compile time and registered automatically.

Key Features

  • Shell / ShellView — Section-based application shell with sidebar navigation.
  • Navigator — Observable navigation stack integrated with DI.
  • SectionStrip — Tab-like section navigation with grouping support.
  • Sections auto-registration — Source generator discovers [Section] ViewModels and wires DI.

Controls

Control Description
HeaderedContainer Content with header, footer, and configurable spacing
EdgePanel Panel with Start, Content, and End regions
EnhancedButton Button with icon, role-based theming, and box shadow
Loading Loading indicator with content transition
BalancedWrapGrid Wrap panel with balanced column widths and MaxItemWidth
MasterDetailsView Side list with detail panel, responsive layout
ResponsivePresenter Width-based content swap (Narrow/Wide + Breakpoint)
StepIndicator Visual step progress for wizards

https://github.com/SuperJMN-Zafiro/Zafiro.Avalonia/assets/3109851/13279313-92cc-4ba9-902e-e3a26da87916

Services

  • DialogService — Show dialogs from ViewModels without coupling to the View layer.
  • NotificationService — Push notifications from ViewModels.
  • ILauncherService — Open URLs and files from ViewModels.

Commands and Selection

  • EnhancedCommandReactiveCommand wrapper with text/icon metadata, busy/disabled distinction via IEnhancedCommand.
  • ReactiveSelection — Observable selection model with multi-select support.
  • CommandPool / EnqueueCommandAction — Throttled, pooled command execution.

Helpers

  • Connect — One-line app bootstrap for all platforms (Desktop, Mobile, Browser).
  • NamingConventionViewLocator + DataTypeViewLocator — Convention and x:DataType based ViewModel → View resolution.
  • IconExtension — Unified icon markup extension supporting Projektanker and SVG providers.
  • ReturnExtension — Markup extension for returning observables in design-time data.

Samples

The solution includes runnable samples that demonstrate all features:

# Desktop
dotnet run --project samples/TestApp/TestApp.Desktop

# Browser (WASM)
dotnet run --project samples/TestApp/TestApp.Browser

Philosophy

  • Functional + ReactiveResult<T>, Maybe<T>, and IObservable<T> throughout. No exceptions for control flow, explicit error handling everywhere.
  • MVVM purist — Strict separation: no UI logic in ViewModels, no business logic in Views. Services are injected, never resolved from Views.
  • Composition over inheritance — Small, composable building blocks and extension methods.
  • ReactiveUI-first — State as observables, commands for intents, no imperative event handlers.
  • Cross-platform — Desktop, Android, iOS, and Browser from the same codebase.

Disclaimer

Zafiro.Avalonia is an independent community project and is not affiliated with, endorsed by, or sponsored by AvaloniaUI OÜ.

Avalonia is a trademark of AvaloniaUI OÜ.

License

MIT © José Manuel Nieto (@SuperJMN)

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
51.2.0 80 4/2/2026
51.1.0 89 3/27/2026
51.0.17 81 3/27/2026
51.0.16 89 3/27/2026
51.0.15 73 3/26/2026
51.0.14 74 3/26/2026
51.0.13 75 3/26/2026
51.0.12 77 3/26/2026
51.0.11 75 3/26/2026
51.0.10 84 3/25/2026
51.0.9 82 3/25/2026
51.0.8 83 3/24/2026
51.0.7 80 3/24/2026
51.0.5 76 3/23/2026
51.0.4 73 3/23/2026
51.0.3 82 3/23/2026
51.0.2 85 3/23/2026
51.0.1 80 3/22/2026
51.0.0 120 3/17/2026
50.0.2 86 3/17/2026
Loading failed