AathifMahir.Maui.MauiIcons.Fluent 4.0.0

Prefix Reserved
dotnet add package AathifMahir.Maui.MauiIcons.Fluent --version 4.0.0                
NuGet\Install-Package AathifMahir.Maui.MauiIcons.Fluent -Version 4.0.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="AathifMahir.Maui.MauiIcons.Fluent" Version="4.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AathifMahir.Maui.MauiIcons.Fluent --version 4.0.0                
#r "nuget: AathifMahir.Maui.MauiIcons.Fluent, 4.0.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.
// Install AathifMahir.Maui.MauiIcons.Fluent as a Cake Addin
#addin nuget:?package=AathifMahir.Maui.MauiIcons.Fluent&version=4.0.0

// Install AathifMahir.Maui.MauiIcons.Fluent as a Cake Tool
#tool nuget:?package=AathifMahir.Maui.MauiIcons.Fluent&version=4.0.0                

.Net Maui Icons

The .NET MAUI Icons - Fluent library serves as a lightweight icon library, addressing icon and font icon management in .NET MAUI by offering controls that utilize the comprehensive open-source version of the Fluent Icon Collection, seamlessly integrated into the library. Check out the Repository for Docs

Get Started

In order to use the .Net Maui Icons - Fluent you need to call the extension method in your MauiProgram.cs file as follows:

using MauiIcons.Fluent;

public static class MauiProgram
{
	public static MauiApp CreateMauiApp()
	{
		var builder = MauiApp.CreateBuilder();
		
		// Initialise the .Net Maui Icons - Fluent
		builder.UseMauiApp<App>().UseFluentMauiIcons();
	}
}

Table of Contents

Usage

In order to make use of the .Net Maui Icons - Fluent you can use the below namespace:

Xaml

xmlns:mi="http://www.aathifmahir.com/dotnet/2022/maui/icons"

C#

using MauiIcons.Fluent;

Advanced Settings

You can set the default icon size, font override, and default font auto-scaling using the UseMauiIconsCore builder extension as follows:

builder.UseMauiIconsCore(x => 
{
	x.SetDefaultIconSize(30.0);
	x.SetDefaultFontOverride(true);
	x.SetDefaultFontAutoScaling(true);
})

Workaround

if you came across this issue dotnet/maui#7503 when using new namespace, Make sure to create an discarded instance of MauiIcon in the codebehind like below


    public MainPage()
    {
        InitializeComponent();
        // Temporary Workaround for url styled namespace in xaml
        _ = new MauiIcon();
    }

Built in Control Usage

Xaml

<mi:MauiIcon Icon="{mi:Fluent AppFolder48}"/>

C#

new MauiIcon() {Icon = Fluent.AppFolder48, IconColor = Colors.Green};

new MauiIcon().Icon(FluentIcons.Accessibility48).IconColor(Colors.Purple);

All the Properties and Features of Built in Control, Check Here

Xaml Extension Usage

<Image Aspect="Center" mi.MauiIcon.Value="{mi:Fluent Icon=Accessibility48}"/>

<Button mi.MauiIcon.Value="{mi:Fluent Icon=AppFolder48}"/>

<ImageButton mi.MauiIcon.Value="{mi:Fluent Icon=AppFolder48}"/>

C# Markup Usage

new ImageButton().Icon(FluentIcons.AppFolder48),

new Image().Icon(FluentIcons.Accessibility48),

new Button().Icon(FluentIcons.AppFolder48).IconSize(40.0).IconColor(Colors.Red)

Disclaimer: It's important to note that not all controls are compatible with C# markup. We have conducted tests with the following controls in the current release: Label, Image, ImageButton, SearchBar, Editor, and Entry. Additionally, the native MauiIcon control, when combined with C# markup, can prove to be quite versatile and offer extra features for various scenarios.

Applying Icon To Text or Placeholder

Controls that Supports Placeholder, Can Assign the Icon To PlaceHolder or Text, Defaults to Placeholder but can be set to Text by Setting TargetName Parameter to Text

xaml

<Entry mi:MauiIcon.Value="{mi:Fluent Icon=Accessibility48, TargetName='Text'}"/>

<SearchBar mi:MauiIcon.Value="{mi:Fluent Icon=AppFolder48, TargetName='Placeholder'}"/>

c#

new Entry().Icon(FluentIcons.Accessibility48, targetName: "Text").IconSize(20.0).IconColor(Colors.Aqua);

new SearchBar().Icon(FluentIcons.AppFolder48, targetName: "Placeholder");

Disclaimer: It's important to note that we are Overriding Font on Input Control to Set the Icon that Could Cause Unexpected Behaviors and Rendering Issues as well.

OnPlatform and OnIdiom Usage

Xaml

<mi:MauiIcon Icon="{mi:Fluent AppFolder48}" OnPlatforms="WinUI, Android, MacCatalyst"/>
<mi:MauiIcon Icon="{mi:Fluent Accessibility48}" OnIdioms="Desktop, Phone, Tablet"/>
<mi:MauiIcon Icon="{mi:Fluent AppFolder48}" OnPlatforms="Android" OnIdioms="Phone"/>

C#

new MauiIcon().Icon(FluentIcons.AppFolder48).OnPlatforms(new List<string>{"WinUI", "Android"});
new MauiIcon().Icon(FluentIcons.Accessibility48).OnIdioms(new List<string>{"Desktop", "Phone"});
new MauiIcon().Icon(FluentIcons.AppFolder48).OnPlatforms(new List<string>{"WinUI", "Android"}).OnIdioms(new List<string>{"Desktop", "Phone"});

Breaking Changes

Version 3 to 4

  • Icon won't be applied to the Controls like Entry, SearchBar and etc.. by default Instead v4 would throw an Exception, Need to set FontOverride to true to apply the Icon to these Controls on Builder Extension Level or Control Level
    • This Behavior can be reverted to Behavior of v3 by Using new UseMauiIconsCore Builder Extension and using SetDefaultFontOverride Method like Below
	builder.UseMauiIconsCore(x => 
	{
		x.SetDefaultFontOverride(true);
	})
  • Icon Size is Now Set to Control's FontSize by Default, Previously it was set to 30.0 by Default
    • This Behavior can be reverted to Behavior of v3 by Using new UseMauiIconsCore Builder Extension and using SetDefaultIconSize Method like Below
	builder.UseMauiIconsCore(x => 
	{
		x.SetDefaultIconSize(30.0);
	})

Version 2 to 3

  • Removal of TypeArgument and Built in OnPlatform and OnIdiom Support, Use MauiIcons Integrated OnPlatform and OnIdioms Feature
  • Removal of Dotnet 7 Support

Version 1 to 2

Old (v1)

xmlns:fluent="clr-namespace:MauiIcons.Fluent;assembly=MauiIcons.Fluent"

<fluent:MauiIcon Icon="AppFolder48"/>

New (v2)

xmlns:mi="http://www.aathifmahir.com/dotnet/2022/maui/icons"

<mi:MauiIcon Icon="{mi:Fluent AppFolder48}"/>

New Changes in v4

  1. We have a new way of Assigning/Setting Icons, Introducing New Attached Property for Icons, The new AttachedProperty Brings in Support for Triggers, Behaviors, Styles, etc.. which is lacking on Classic Xaml Markup Extension, and also it's more cleaner and readable
/// Old
<Image Aspect="Center" Source="{mi:Fluent Icon=Accessibility48}"/>

// New
<Image Aspect="Center" mi.MauiIcon.Value="{mi:Fluent Icon=Accessibility48}"/>

Disclaimer: The Old Xaml Markup Extension is still Supported and can be used, but it's recommended to use the new Attached Property for better support and readability and we have plans to deprecate the old Xaml Markup Extension in the future in favor of Attached Property

Example of Using Styles

<Style x:Key="ButtonStyle" TargetType="Button">
       <Setter Property="mi:MauiIcon.Value" Value="{mi:Fluent Icon=AppFolder48}" />
</Style>

<Button Style="{StaticResource ButtonStyle}"/>
  1. Introducing New UseMauiIconsCore Builder Extension for Setting Default Icon Size, Font Override, Default Font Auto Scaling and etc..
  2. Improved Built in OnPlatforms and OnIdioms with Binding Improvements and Enhanced Performance
  3. New OnClickAnimation Support for MauiIcon Control

Advanced Usage

The .Net Maui Icons library offers a wide range of features and capabilities, including the ability to customize how icons applied and which property it is applied too and etc. For more information on advanced usage, please refer to the Advanced Usage

License

MauiIcons.Fluent
The MauiIcons.Fluent is library is distributed under the MIT License.

Fluent UI System Icons
The Fluent UI System Icons library is distributed under the MIT License.

Contribute

If you wish to contribute to this project, please don't hesitate to create an issue or request. Your input and feedback are highly appreciated. Additionally, if you're interested in supporting the project by providing resources or becoming a sponsor, your contributions would be welcomed and instrumental in its continued development and success. Thank you for your interest in contributing to this endeavor.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-android34.0 is compatible.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-ios18.0 is compatible.  net8.0-maccatalyst was computed.  net8.0-maccatalyst18.0 is compatible.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net8.0-windows10.0.19041 is compatible. 
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
4.0.0 179 10/17/2024
3.0.0 1,400 5/11/2024
2.2.5 256 5/6/2024 2.2.5 is deprecated because it has critical bugs.
2.2.0-pre 123 5/4/2024
2.1.5 493 4/1/2024
2.1.2 968 3/17/2024
2.1.1 635 2/1/2024
2.1.0 606 12/23/2023
2.0.0 520 11/17/2023
2.0.0-rc1.1 74 11/14/2023
1.2.1 2,006 8/15/2023
1.2.0 253 7/1/2023
1.1.5 263 6/17/2023
1.1.1 208 6/3/2023
1.1.0 582 3/10/2023
1.1.0-pre1 139 3/3/2023
1.0.1 484 12/7/2022
1.0.0 362 11/19/2022
0.2.0-pre2 147 11/8/2022
0.2.0-pre1 154 11/7/2022
0.1.1 349 11/8/2022
0.1.0 362 11/7/2022
0.1.0-pre9 155 11/4/2022
0.1.0-pre7 171 11/1/2022
0.1.0-pre6 142 10/31/2022
0.1.0-pre5 158 10/31/2022

v4.0.0
• Various Enhancements and Fixes for MauiIcon Control
• New Attached Property for Seamless Icon Integration
• Styles and Triggers Support
• New OnClick Animation Support for MauiIcon Control
• Enhanced Global Customization Support using New `UseMauiIconsCore` Extension
• Overall Fixes and Enhancements
• Breaking Changes: [https://github.com/AathifMahir/MauiIcons/#breaking-changes]

v3.0.0
• Critical Fixes for Xaml Markup Binding Support
• Breaking Changes: Removal of Dotnet 7 Support
• Breaking Changes: Removal of Maui OnPlatform and OnIdioms Support Instead Use MauiIcons Integrated Custom OnPlatforms and OnIdioms Feature

v2.2.5
• New and Improved Xaml Markup Extension with Binding Support

v2.1.5
• New and Improved Extension for MauiIcon C#

v2.1.2
• Minor Fixes and Improvements for Base Extension

v2.1.1
• Minor Patch on Issue #83

v2.1.0
• Docs Update

v2.0.0
• New Modular Core
• Major Core Control Enhancements
• Icon Suffix Support on Core Control
• Major Core Extension Enhanecements and Support for C# Markup Extension
• New C# Markup Extension for Maui Built in Controls
• New OnPlatform and OnIdioms Support
• Improved Docs
• Breaking Changes - https://github.com/AathifMahir/MauiIcons/#breaking-changes-from-v2

v1.2.1
• Added Support for Vanilla Version of Dotnet to Unit Test the Project

v1.2.0
• Added Variant Support Base Control and Extension
• New and Improved Icon Control

v1.1.5
• Added Icon Unicode Support for Icon Extension
• Added Direct Content Support
• Minor Enhancements and Fixes

v1.1.1
• Minor Enhancements and Fixes

v1.1.0
• Dotnet 7 Support
• Minor Enhancements and Fixes

v1.0.1
• Fixed Missing Cast

v1.0.0
• First Milestone Build and Production App Ready
• Breaking Changes: MauiIcons.Fluent is Replaced by MauiIcons.SegoeFluent
 You'll need to download the MauiIcons.SegoeFluent Package using the below link for Continueing to use Windows Fluent Icons
 AathifMahir.Maui.MauiIcons.SegoeFluent

v0.2.0-pre2
• Ported Critical Fix from Stable Build

v0.2.0-pre1
• Breaking Changes: MauiIcons.Fluent is Switched to MauiIcons.SegoeFluent
 You'll need to download the MauiIcons.SegoeFluent Package to using the below link use the Old Fluent Icon Package
 AathifMahir.Maui.MauiIcons.SegoeFluent
• Add New Icon Collection for New Fluent Package

v0.1.0
• First Stable Build
• Added New Attributes to Icon Extension
• Improvements to Documentation