roubachof
NuGet publisher profile
Packages (22)
Sharpnado.TaskMonitor
Free yourself from async void! TaskMonitor is a task wrapper component helping you to deal with "fire and forget" Task (non awaited task) by implementing async/await best practices. Featuring: * Safe execution of your non awaited tasks * Delegates for all states of the loaded task * Builder pattern for more elegant construction and deferred execution * Support for task with result * Default handling of errors and statistics * Global configuration for statistics and errors handler * Consider globally or locally the cancel state as faulted to simplify your workflow
Sharpnado.Shadows
Add as many custom shadows as you like to any Xamarin.Forms view (Android, iOS, UWP, Tizen). * You can specify each shadow Color, Opacity, Blur, and Offset * You can add one shadow, 3 shadows, 99 shadows, to any Xamarin.Forms element * Implement easily Neumorphism * Animate any of these property and make the shadows dance around your elements * The only dependency is `Xamarin.Forms`, no `AndroidX`, no `SkiaSharp` (except Tizen) needed! Performance: Implemented with custom draw on Android, CALayer on iOS, SpriteVisual on UWP, SkiaSharp on Tizen. Mandatory initialization on iOS: Xamarin.Forms.Forms.Init(); Sharpnado.Shades.iOS.iOSShadowsRenderer.Initialize(); Mandatory initialization on UWP: var rendererAssemblies = new[] { typeof(UWPShadowsRenderer).GetTypeInfo().Assembly }; Xamarin.Forms.Forms.Init(e, rendererAssemblies); Mandatory initialization on Tizen: Xamarin.Forms.Forms.Init(); Sharpnado.Shades.Tizen.TizenShadowsRenderer.Initialize();
Sharpnado.MaterialFrame
The Xamarin.Forms MaterialFrame aims at delivering out of the box modern popular theming such as: * Light * Dark * Acrylic * AcrylicBlur The AcrylicBlur theme also provides three different blur styles inherited from the iOS UIVisualEffectView: * Light * ExtraLight * Dark On Android, the blur is implemented thanks to the RealtimeBlurView from Tu Yimin (mmin18). Mandatory initialization on iOS: Xamarin.Forms.Forms.Init(); Sharpnado.MaterialFrame.iOS.iOSMaterialFrameRenderer.Init(); Mandatory initialization on macOS: Xamarin.Forms.Forms.Init(); Sharpnado.MaterialFrame.macOS.macOSMaterialFrameRenderer.Init(); Mandatory initialization on UWP: var rendererAssemblies = new[] { typeof(UWPMaterialFrameRenderer).GetTypeInfo().Assembly }; Xamarin.Forms.Forms.Init(e, rendererAssemblies);
MetroLog.Net6
MetroLog is a lightweight logging framework designed for .net 6. Although the API is based on NLog and log4net, the intention is that it's a very basic logging system. This version targets .net 6, which includes all platforms.
MetroLog.Maui
MetroLog.Maui adds some cool MAUI goodness like: * Shake to see logs, * A MetroLogPage that displays your logs and add the possibility to share them as a zip, * A LogController object that you can use to globally navigate to the MetroLogPage and access all your MetroLog's operators (like compress logs and more...).
Sharpnado.Presentation.Forms
Collection of Xamarin.Forms components. IMPORTANT: On platform projects, call SharpnadoInitializer.Initialize() after Xamarin.Forms.Forms.Init() and before LoadApplication(new App()). Pure Xamarin.Forms tabs: * Fixed tabs (android tabs style) * Scrollable tabs * Segmented tabs * Custom shadows (neumorphism ready) * Circle button in tab bar * Bottom bar tabs (ios tabs style) * Custom tabs (be creative just implement TabItem) * Independent ViewSwitcher Sharpnado.Shadows: * Add as many custom shadows as you like to any view (Android, iOS, UWP) * You can specify each shadow Color, Opacity, BlurRadius, and Offset * Simply implement Neumorphism * You can add one shadow, 3 shadows, 99 shadows, to any Xamarin.Forms element * Animate any of these property and make the shadows dance around your elements MaterialFrame: * AcrylicBlur mode * 3 Blur styles: Light, ExtraLight, Dark (UIVisualEffectView styles) * Acrylic mode * Dark mode * Light mode * Change modes dynamically * Performance (CALayer on ios, LayerDrawable on android) * Android: RealtimeBlurView from Tu Yimin (mmin18) The TaskLoaderView 2.0 handles all your task loading states: * Handles error with custom messages and icons * Handles empty states * Show snackbar errors for refresh scenarios (if data is already shown) * Handles retry with button * Support Xamarin.Forms.Skeleton * Can override any state views with your own custom ones HorizontalListView for Xamarin.Forms (close to a CollectionView): * Carousel layout * Column count * Snapping on first or middle element * Padding and item spacing * Handles NotifyCollectionChangedAction Add Remove and Reset actions * View recycling * RecyclerView on Android * UICollectionView on iOS Grid ListView (HorizontalListView with ListLayout set to Grid): * Column count * Drag And Drop * RefreshView support * Padding and item spacing * Handles NotifyCollectionChangedAction Add Remove and Reset actions * View recycling
Sharpnado.Tabs.Maui
Pure MAUI Tabs (No handlers, no renderers, no effects): * Fixed tabs (android tabs style) * Scrollable tabs * Vertical tabs * Material design tabs (top and leading icon) * Support for SVG images * Segmented tabs * Badges on tabs * Circle button in tab bar * Bottom bar tabs (ios tabs style) * Custom tabs (be creative just implement TabItem) * Independent ViewSwitcher * Bindable with ItemsSource * Ripple touch effect for all platforms
Sharpnado.TaskLoaderView
Free yourself from IsBusy=true! The `TaskLoaderView` and the `TemplatedTaskLoader` are UI components that handle all your UI loading state (Loading, Error, Result, Notification), and removes all the pain of async loading from your view models (try catch / async void / IsBusy / HasErrors / base view models / ...) thanks to its brother the `TaskLoaderNotifier`. Featuring: * Default views for all loading states (Loading, Error, Success, Notification, Refresh) * Snackbar component * Compose notifiers with CompositeTaskLoaderNotifier * Stylable views including fonts, accent color, error images, ... * Any states are overridable with user custom views and easily positionned with AbsoluteLayout properties * Support for Xamarin.Forms.Skeleton nuget package * Support for refresh scenarios, and error while refreshing with the ErrorNotificationView * Supports Async mvvm ICommand through TaskLoaderCommand * Supports loading task on demand with the NotStarted state * TaskLoaderNotifier for the ViewModel side taking care of all the error handling and the IsBusy nonsense
Sharpnado.Forms.HorizontalListView
* Horizontal, Grid, Carousel or Vertical layout * Reveal custom animations * Drag and Drop feature * Column count * Infinite loading with Paginator component * Snapping on first or middle element * Padding and item spacing * Handles NotifyCollectionChangedAction Add, Remove and Reset actions * View recycling * RecyclerView on Android * UICollectionView on iOS Initialization: * On core project call Sharpnado.HorizontalListView.Initializer.Initialize(true, false) in App.xaml.cs after InitializeComponent(). * On platform projects (ios/android), call SharpnadoInitializer.Initialize() before Xamarin.Forms.Forms.Init() and LoadApplication(new App()). Warning: the MaterialFrame is no longer included in the package, you have to install it manually: Sharpnado.MaterialFrame.
Sharpnado.Tabs
Pure Xamarin.Forms tabs: * Fixed tabs (android tabs style) * Scrollable tabs * Vertical tabs * Material design tabs (top and leading icon) * Support for SVG images * Segmented tabs * Custom shadows (neumorphism ready) * Badges on tabs * Circle button in tab bar * Bottom bar tabs (ios tabs style) * Custom tabs (be creative just implement TabItem) * Independent ViewSwitcher * Bindable with ItemsSource -------------- Installation -------------- * In Core project, in `App.xaml.cs`: public App() { InitializeComponent(); Sharpnado.Tabs.Initializer.Initialize(loggerEnable: false); ... } * In iOS project: Xamarin.Forms.Forms.Init(); Sharpnado.Tabs.iOS.Preserver.Preserve(); * In UWP project: var rendererAssemblies = new[] { typeof(UWPShadowsRenderer).GetTypeInfo().Assembly, typeof(UwpTintableImageEffect).GetTypeInfo().Assembly, }; Xamarin.Forms.Forms.Init(e, rendererAssemblies);
ImageCaching.Nuke
Package Description
Sharpnado.MaterialFrame.Maui
The MAUI MaterialFrame aims at delivering out of the box modern popular theming such as: * Light * Dark * Acrylic * AcrylicBlur The AcrylicBlur theme also provides three different blur styles inherited from the iOS UIVisualEffectView: * Light * ExtraLight * Dark On Android, the blur is implemented with StackBlur algorithm - a pure C# implementation that works on all Android versions including 15+ with 16KB page size. ## Installation * In Core project, in `MauiProgram.cs`: ```csharp public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp() .UseSharpnadoMaterialFrame(loggerEnabled: false); } ```
Sharpnado.Maui.TaskLoaderView
Free yourself from IsBusy=true! The `TaskLoaderView` and the `TemplatedTaskLoader` are UI components that handle all your UI loading state (Loading, Error, Result, Notification), and removes all the pain of async loading from your view models (try catch / async void / IsBusy / HasErrors / base view models / ...) thanks to its brother the `TaskLoaderNotifier`. Featuring: * Default views for all loading states (Loading, Error, Success, Notification, Refresh) * Snackbar component * Compose notifiers with CompositeTaskLoaderNotifier * Stylable views including fonts, accent color, error images, ... * Any states are overridable with user custom views and easily positionned with AbsoluteLayout properties * Support for Xamarin.Forms.Skeleton nuget package * Support for refresh scenarios, and error while refreshing with the ErrorNotificationView * Supports Async mvvm ICommand through TaskLoaderCommand * Supports loading task on demand with the NotStarted state * TaskLoaderNotifier for the ViewModel side taking care of all the error handling and the IsBusy nonsense
Sharpnado.CollectionView.Maui
CollectionView on steroids including: * Horizontal, Grid, Carousel or Vertical layout * Header, Footer and GroupHeader * Reveal custom animations * Drag and Drop * Column count * Infinite loading with Paginator component * Snapping on first or middle element * Padding and item spacing * Handles NotifyCollectionChangedAction Add, Remove and Reset actions * View recycling * RecyclerView on Android * UICollectionView on iOS ## Installation * In Core project, in `MauiProgram.cs`: ```csharp public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp() .UseSharpnadoCollectionView(loggerEnable: false); } ```
Xamarin.Forms.Nuke
Nuke 10.3.1 (https://github.com/kean/Nuke/releases/tag/10.3.1) for Xamarin.Forms. This repository was inspired by Jonathan Peppers GlideX implementation of the new IImageViewHandler interface for Xamarin.Forms (https://github.com/jonathanpeppers/glidex). Its goal is to provide the same kind of implementation for iOS with nuke, a native image caching library, achieving a complete image caching solution for Xamarin.Forms: you don't have to change any line of your existing project, the Xamarin.Forms image source handlers will just be overridden with cache-enabled ones. IMPORTANT: On iOS projects, call Xamarin.Forms.Nuke.FormsHandler.Init() after Xamarin.Forms.Forms.Init() and before LoadApplication(new App()).
Xamarin.Nuke
Small wrapper around Nuke 10.3.1 (https://github.com/kean/Nuke/releases/tag/10.3.1) for Xamarin.iOS.
Sharpnado.CollectionView
* Horizontal, Grid, Carousel or Vertical layout * Header, Footer and GroupHeader * Reveal custom animations * Drag and Drop * Column count * Infinite loading with Paginator component * Snapping on first or middle element * Padding and item spacing * Handles NotifyCollectionChangedAction Add, Remove and Reset actions * View recycling * RecyclerView on Android * UICollectionView on iOS Initialization: * On core project call Sharpnado.CollectionView.Initializer.Initialize(true, false) in App.xaml.cs after InitializeComponent(). * On platform projects (ios/android), call Initializer.Initialize() before Xamarin.Forms.Forms.Init() and LoadApplication(new App()).
Sharpnado.HorusSkeleton.Maui
The new loading approach for cool apps in .Net MAUI
Sharpnado.Maui.Nuke
Nuke 12 for Maui. Since MAUI, the Android platform get a native caching library: Glide. Unfortunately on, iOS, there is no native caching... Sharpnado.Maui.Nuke is here to repair this injustice by implementing image caching with the fastest and most popular ios native caching library: Nuke.
TcxTools.NetStandard
Tools for manipulating Garmin Training Center XML files.
Sharpnado.Maui.Shadows
Sharpnado.Maui.Shadows adds high-quality, customizable drop shadows to any .NET MAUI view on Android, iOS, Windows, and MacCatalyst. Define multiple shades per view with Color, Opacity, BlurRadius, and Offset, and match corners with CornerRadius for pixel-perfect results. Android supports a selectable blur algorithm via BlurType (Gpu or StackBlur). Built on modern MAUI handlers with platform-optimized implementations (RenderEffect/RenderScript on Android, CALayer on iOS/MacCatalyst, WinUI 3 Composition on Windows), weak events to prevent leaks, and global bitmap caching for performance. Includes XAML markup extensions (SingleShade, ImmutableShades, ShadeStack, NeumorphismShades) for concise, reusable definitions.
Sharpnado.Maui.DragDropGridView
Sharpnado.DragDropGridView is a high-performance .NET MAUI control with automatic grid arrangement, adaptive item sizing, and drag-and-drop reordering. Features include ItemsSource/DataTemplate binding, automatic column calculation, configurable spacing and padding, responsive orientation handling, and smooth drag-and-drop with visual feedback. Pure cross-platform implementation with no platform-specific code. Perfect for building draggable tile grids, reorderable galleries, and adaptive collections.