PleasantUI 5.2.2

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

GitHub License GitHub repo size Nuget GitHub release (with filter)

<img align="center" src="https://i.imgur.com/Sr3crB8.png">

Imgur

PleasantUI

Repositories: Original (Onebeld) · Fork (ghudulf)

PleasantUI is a cross-platform UI theme and control library for Avalonia, inspired by Microsoft Fluent Design and the WinUI/UWP visual language. It completely re-styles every standard Avalonia control and adds a suite of custom controls, a multi-theme engine with custom theme support, a reactive localization system, and a custom window chrome — all AOT-compatible with no rd.xml required.

The project has been in active development since 2021, originally as part of the Regul and Regul Save Cleaner projects.

✨ Features

Complete Fluent-style control theming

Every standard Avalonia control gets a full Fluent Design makeover — rounded corners, layered fill colors, smooth pointer-over and pressed transitions, and accent color integration:

Control Control Control
Button (+ AppBar, Accent, Danger variants) CheckBox RadioButton
ToggleButton / ToggleSwitch RepeatButton / ButtonSpinner Slider
TextBox / AutoCompleteBox NumericUpDown ComboBox / DropDownButton
Calendar / CalendarDatePicker / TimePicker DataGrid ListBox / TreeView
Expander TabControl / TabItem ScrollBar / ScrollViewer
ProgressBar Menu / ContextMenu ToolTip
Carousel Separator NotificationCard

Custom Pleasant controls

Controls built from scratch that go beyond what Avalonia ships:

Control Description Demo
PleasantWindow Custom window chrome with a Fluent title bar, subtitle, custom icon/title content, optional blur, content-extends-into-titlebar, and macOS caption override None
NavigationView / NavigationViewItem Collapsible side navigation panel, similar to WinUI NavigationView None
PleasantTabView / PleasantTabItem Chromium-style tab strip with add/close buttons and scrollable tab bar None
ContentDialog Modal overlay dialog with bottom button panel and smooth scroll content area None
PleasantSnackbar Temporary non-intrusive notification bar Imgur
ProgressRing Circular progress indicator — both determinate and indeterminate with animated arc Imgur
OptionsDisplayItem Settings-style row with header, description, icon, action button slot, navigation chevron, and expandable content Imgur
InformationBlock Compact pill-shaped label combining an icon and a value Imgur
MarkedTextBox / MarkedNumericUpDown Input controls with inline label/unit markers None
RippleEffect Material-style ripple click feedback Imgur
SmoothScrollViewer ScrollViewer with inertia gesture support None
PleasantMiniWindow Lightweight floating window None
Timeline Displays a list of events in chronological order along a vertical axis. Supports four layout modes, custom icons, and five severity types. Imgur
InstallWizard A multi-step installation wizard with a sidebar step list, progress bar, and Back / Next / Cancel navigation. Imgur
PleasantMenu A customizable flyout menu with a title, optional info badges, a grid of large icon buttons, and a footer bar with small utility buttons. Imgur
PathPicker Combines a read-only TextBox with a browse button. Supports OpenFile, SaveFile, and OpenFolder modes, optional multi-select, file-type filters, and two-way binding on the selected path text. Imgur
PopConfirm Wraps any trigger control and shows a small popup with a header, body, and Confirm / Cancel buttons before executing a command. Imgur

Theme engine

  • Built-in themes: Light, Dark, Mint, Strawberry, Ice, Sunny, Spruce, Cherry, Cave, Lunar
  • System mode — follows the OS light/dark preference automatically
  • Custom themes — create, edit, export, import, and persist your own color palettes via the built-in ThemeEditorWindow
  • Accent color follows the OS accent or can be overridden per-user; light/dark variants and gradient pairs are generated automatically
  • Settings are persisted to disk automatically on desktop; mobile apps can save manually

Localization system

  • Localizer singleton backed by .NET ResourceManager — add any number of .resx resource files
  • {Localize Key} AXAML markup extension binds reactively — switching language updates every bound string instantly without reloading views
  • Localizer.TrDefault(key, fallback) for safe lookups that fall back to a raw string instead of an error message
  • LocalizationChanged event for view models and code-behind to react to language switches

Packages

Package Description
PleasantUI Core theme, all control styles, Pleasant controls, theme engine, localization
PleasantUI.ToolKit MessageBox, ThemeEditorWindow, color picker utilities
PleasantUI.MaterialIcons Material Design icon geometry library for use with PathIcon
PleasantUI.DataGrid Fluent-styled DataGrid extension

📖 Documentation

Detailed reference docs for each control are in the docs/ folder:

Doc Controls
PleasantWindow PleasantWindow, IPleasantSplashScreen
PleasantMiniWindow PleasantMiniWindow
PleasantTitleBar PleasantTitleBar
PleasantCaptionButtons PleasantCaptionButtons
NavigationView NavigationView, NavigationViewItem
PleasantTabView PleasantTabView, PleasantTabItem
ContentDialog ContentDialog
MessageBox MessageBox (ToolKit)
PleasantDialog PleasantDialog (ToolKit)
CrashReportDialog CrashReportDialog
StepDialog StepDialog
PleasantSnackbar PleasantSnackbar
ProgressRing ProgressRing
OptionsDisplayItem OptionsDisplayItem
InformationBlock InformationBlock
Timeline Timeline, TimelineItem
InstallWizard InstallWizard, WizardStep
PathPicker PathPicker
PopConfirm PopConfirm
PleasantMenu PleasantMenu, PleasantMenuItem, PleasantMenuFooterItem
PleasantMenuFlyout PleasantMenuFlyout
PleasantFlyout PleasantFlyout
PinCode PinCode
SelectionList SelectionList, SelectionListItem
RippleEffect RippleEffect
SmoothScrollViewer SmoothScrollViewer
MarkedInputs MarkedTextBox, MarkedNumericUpDown
MarkedTextBox MarkedTextBox
MarkedNumericUpDown MarkedNumericUpDown
PleasantDatePicker PleasantDatePicker
PleasantBorder PleasantBorder
BackdropBlurBorder BackdropBlurBorder
ShadowBorder ShadowBorder
PleasantTrayPopup PleasantTrayPopup, StatusItem
DataGrid PleasantUI.DataGrid package
PropertyGrid PropertyGrid, PropertyRow
CommandBar CommandBar, CommandBarButton, CommandBarToggleButton
BreadcrumbBar BreadcrumbBar, BreadcrumbBarItem
PleasantDrawer PleasantDrawer
DashboardCard DashboardCard
DownloadPanel DownloadPanel
LogViewerPanel LogViewerPanel
TerminalPanel TerminalPanel
TreeViewPanel TreeViewPanel, TreeViewSection
ItemListPanel ItemListPanel
VirtualizingWrapPanel VirtualizingWrapPanel
PleasantView PleasantView
PleasantSplashScreen PleasantSplashScreen
ModalWindowHost ModalWindowHost
ThemePreviewVariantScope ThemePreviewVariantScope
Localization Localizer, {Localize} markup extension
Theme Engine PleasantTheme, custom themes, color tokens

🚀 Getting Started

Install

Package List (Avalonia 12)

Published on NuGet:

<PackageReference Include="PleasantUI" Version="5.2.0" />
<PackageReference Include="PleasantUI.DataGrid" Version="5.2.0" />
<PackageReference Include="PleasantUI.MaterialIcons" Version="5.2.0" />
<PackageReference Include="PleasantUI.ToolKit" Version="5.2.0" />

Add the theme

In your App.axaml, add PleasantTheme to your styles:

<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="YourApp.App">
    <Application.Styles>
        <PleasantTheme />
    </Application.Styles>
</Application>

Initialize correctly

Make sure AvaloniaXamlLoader.Load(this) is called in Initialize():

public partial class App : Application
{
    public override void Initialize()
    {
        AvaloniaXamlLoader.Load(this); // required
    }

    public override void OnFrameworkInitializationCompleted()
    {
        if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
        {
            desktop.MainWindow = new MainWindow
            {
                DataContext = new MainWindowViewModel(),
            };
        }

        base.OnFrameworkInitializationCompleted();
    }
}

Use PleasantWindow

Replace Window with PleasantWindow to get the custom Fluent title bar:

using PleasantUI.Controls;

public partial class MainWindow : PleasantWindow
{
    public MainWindow() => InitializeComponent();
}
<PleasantWindow xmlns="https://github.com/avaloniaui"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
                x:Class="YourApp.Views.MainWindow"
                Title="Avalonia Application">
</PleasantWindow>

Key PleasantWindow properties:

Property Type Description
TitleBarType Classic / ClassicExtended Title bar layout style
ExtendsContentIntoTitleBar bool Lets content render behind the title bar
Subtitle string Secondary text shown next to the title
DisplayIcon object Custom icon content in the title bar
DisplayTitle object Custom title content (e.g. a PathIcon)
EnableBlur bool Acrylic/blur window background
CaptionButtons enum Which caption buttons to show
LeftTitleBarContent object Content injected left of the title

🌍 Localization

Register your .resx resource managers in your Application constructor:

public App()
{
    Localizer.AddRes(new ResourceManager(typeof(Properties.Localizations.App)));
    Localizer.ChangeLang("en");
}

Use {Localize Key} in AXAML — updates live when the language changes:

<TextBlock Text="{Localize WelcomeMessage}" />
<Button Content="{Localize SaveButton}" />

Switch language at runtime:

Localizer.ChangeLang("ru");

Safe lookup with fallback in code-behind:

string title = Localizer.TrDefault("DialogTitle", "Confirm");

🔲 Button variants

<Button Content="Default" />
<Button Theme="{DynamicResource AccentButtonTheme}" Content="Accent" />
<Button Theme="{DynamicResource DangerButtonTheme}" Content="Danger" />
<Button Theme="{DynamicResource AppBarButtonTheme}" Content="AppBar" />

📃 OptionsDisplayItem


<OptionsDisplayItem Header="Account"
                    Description="Manage your account"
                    Icon="{x:Static MaterialIcons.AccountOutline}"
                    Navigates="True" />


<OptionsDisplayItem Header="Dark mode"
                    Icon="{x:Static MaterialIcons.WeatherNight}">
    <OptionsDisplayItem.ActionButton>
        <ToggleSwitch />
    </OptionsDisplayItem.ActionButton>
</OptionsDisplayItem>


<OptionsDisplayItem Header="Advanced" Expands="True">
    <OptionsDisplayItem.Content>
        <StackPanel>
            <CheckBox Content="Enable feature X" />
        </StackPanel>
    </OptionsDisplayItem.Content>
</OptionsDisplayItem>

🖼️ Screenshots

Regul Save Cleaner

image

OlibKey

image

❤️ Credits

<img src="https://i.imgur.com/IvbDwuz.png" width="360" align="right"/>

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  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 (2)

Showing the top 2 NuGet packages that depend on PleasantUI:

Package Downloads
PleasantUI.DataGrid

PleasantUI is a cross-platform UI theme and control library for Avalonia, inspired by Microsoft Fluent Design and the WinUI/UWP visual language. It provides complete re-styled themes for all standard Avalonia controls — buttons, checkboxes, sliders, text boxes, data grids, calendars, combo boxes, and more — along with a suite of custom Pleasant controls including NavigationView, PleasantTabView, ProgressRing, OptionsDisplayItem, PleasantSnackbar, InformationBlock, ContentDialog, and a full theme editor with custom theme support. Supports light, dark, and multiple accent color themes out of the box, with a reactive localization system and desktop/mobile adaptive layouts.

PleasantUI.ToolKit

PleasantUI is a cross-platform UI theme and control library for Avalonia, inspired by Microsoft Fluent Design and the WinUI/UWP visual language. It provides complete re-styled themes for all standard Avalonia controls — buttons, checkboxes, sliders, text boxes, data grids, calendars, combo boxes, and more — along with a suite of custom Pleasant controls including NavigationView, PleasantTabView, ProgressRing, OptionsDisplayItem, PleasantSnackbar, InformationBlock, ContentDialog, and a full theme editor with custom theme support. Supports light, dark, and multiple accent color themes out of the box, with a reactive localization system and desktop/mobile adaptive layouts.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
5.2.2 161 4/11/2026
5.2.1 136 4/10/2026
5.2.1-fix 119 4/10/2026
5.2.0 133 4/10/2026
5.1.3-alpha3-fix 126 4/8/2026
5.1.3-alpha3 121 4/8/2026
5.1.3-alpha2-fix 127 4/4/2026
5.0.0-alpha3 222 11/4/2024
5.0.0-alpha2 272 11/4/2024
5.0.0-alpha1 196 9/20/2024
4.1.0-beta3 189 7/4/2024
4.1.0-beta2 182 6/19/2024
4.1.0-beta1 195 4/25/2024
4.0.1 375 3/27/2024
4.0.0 261 2/18/2024
4.0.0-alpha.3 135 1/29/2024
4.0.0-alpha.2 122 1/27/2024
4.0.0-alpha.1 210 1/6/2024
3.1.1 345 11/24/2023
3.1.0 197 10/8/2023
Loading failed