Skip to content

About

Nova.Avalonia.UI is a comprehensive suite of UI controls for Avalonia UI.

Topics

Resources

Stars

92 stars

Watchers

5 watching

Forks

Latest commit

 

History

216 Commits

Folders and files

Repository files navigation

Welcome to Nova.Avalonia.UI

Nova.Avalonia.UI

Nova.Avalonia.UI is a comprehensive suite of UI controls for Avalonia UI, designed to help developers build modern, accessible, and high-performance cross-platform applications.

Try the live web gallery. Explore the controls and layout panels in your browser, with no installation required.

Nova.Avalonia.UI

Installation

Nova Avalonia UI requires Avalonia 12.1.1 or later in the Avalonia 12 release line.

Install the main controls and layout panels:

dotnet add package Nova.Avalonia.UI

Register the Nova themes after your Avalonia base theme:

<Application.Styles>
    <FluentTheme />
    <StyleInclude Source="avares://Nova.Avalonia.UI/Themes/Controls.axaml" />
</Application.Styles>

Features with larger third-party dependencies are available separately:

dotnet add package Nova.Avalonia.UI.BarcodeGenerator
dotnet add package Nova.Avalonia.UI.CodeViewer

Documentation

The documentation covers everything from first steps to detailed control APIs and samples:

Read the Nova.Avalonia.UI documentation

Gallery

Open the WebAssembly gallery to try the controls and layout panels, switch between light and dark themes, and view sample code.

To run the web sample locally, install the .NET 10 SDK, then run these commands from the repository root:

dotnet workload install wasm-tools
dotnet run --project src/Nova.Avalonia.UI.Gallery.Browser

Install wasm-tools once. Open the local URL printed in the terminal and keep the command running while testing. The sample must be served over HTTP; opening wwwroot/index.html directly will not run it.

The shared gallery lives in src/Nova.Avalonia.UI.Gallery. To run it on your desktop:

dotnet run --project src/Nova.Avalonia.UI.Gallery.Desktop

Mobile hosts are available at src/Nova.Avalonia.UI.Gallery.iOS and src/Nova.Avalonia.UI.Gallery.Android.

Controls

Avatar

The Avatar control presents a person's identity using an image, initials, icon, or custom content. It includes automatic background generation, size presets, and optional presence status indicators.

Avatar

Badge

The Badge control displays a notification badge on top of other content. It supports numeric counts with overflow handling (e.g., "99+"), dot mode, various placements, and customizable styling.

Badge

BarcodeGenerator

The BarcodeGenerator control generates and renders various barcode symbologies including QR codes, Data Matrix, Code 128, EAN-13, and more. It supports customizable colors, error correction levels, and logo overlays.

BarcodeGenerator

CodeViewer

The optional Nova.Avalonia.UI.CodeViewer package displays read-only source code with syntax highlighting, line numbers, and copy support. It also includes a compact button that opens several source files in a drawer, which is useful for samples and galleries.

CodeViewer

TextMate highlighting is enabled on desktop targets. Mobile Apple and Android targets use the same viewer with plain text because the tokenizer's native dependency is not available there. Browser (WebAssembly) targets are not supported yet, so the WebAssembly gallery does not include the Code Viewer sample or the source code button.

Code Viewer is kept in a separate package because it uses AvaloniaEdit and its TextMate grammars. Applications that do not show source code can continue using Nova.Avalonia.UI without those extra dependencies.

dotnet add package Nova.Avalonia.UI.CodeViewer

Register its styles after your base Avalonia theme:

<StyleInclude Source="avares://Nova.Avalonia.UI.CodeViewer/Themes/Controls.axaml" />

See the Code Viewer documentation for examples.

PinBox

The PinBox control provides a specialized input field for PIN codes, OTP verification, and security codes. It features individual character boxes, grouping separators, read-only display, text normalization, validation, masking, responsive sizing, command binding, accessibility value support, and multiple theme presets.

PinBox

CompareSlider

The CompareSlider control enables users to compare two pieces of content side-by-side. A draggable divider allows the user to reveal more of the "before" or "after" content interactively.

CompareSlider

Fortune

The FortuneWheel and FortuneBar controls provide interactive spin-to-win functionality for games, raffles, and random selection scenarios. Features include smooth animations, weighted selection, customizable styling strategies, and configurable indicators.

Fortune

RatingControl

The RatingControl allows users to view and set ratings using interactive items such as stars, hearts, or custom shapes. It supports multiple precision levels, customizable appearance, and full keyboard and pointer interaction.

RatingControl

Shimmer

The Shimmer control shows a lightweight skeleton while your content is loading. It inspects the visual tree beneath it to draw shapes that match controls, then animates a gradient sweep over the placeholders.

Shimmer

Gravatar

The Gravatar control generates GitHub-style identicon avatars from identifiers such as emails or usernames. It supports custom image overrides, configurable sizes, and pluggable generators via the IGravatarGenerator interface.

Gravatar

Scratcher

The Scratcher control temporarily hides content beneath an opaque overlay. Users can reveal the hidden content by "scratching" the overlay with pointer input, similar to a physical scratch card.

Scratcher

SegmentedSlider

The SegmentedSlider control displays a range value across equal or custom weighted segments. It supports segment labels, snapping, keyboard interaction, read-only mode, and Avalonia-style styling through inherited properties and theme resources.

Shield

The Shield control displays a subject and status in a badge-like format, similar to shields.io badges. It's commonly used to show build status, version numbers, licenses, or other metadata in a compact, visually distinct way.

Shield

Watermark

The Watermark control renders repeating text or image patterns as a tiled overlay. Useful for marking documents as confidential, draft, or adding branding.

Watermark

Layout Panels

ArcPanel

The ArcPanel arranges items along an arc (partial circle). Useful for semi-circular menus, dial interfaces, or decorative layouts.

ArcPanel

AutoLayout

A specialized panel reproducing Figma's Auto Layout behavior (Orientation, Spacing, Padding, Alignment).

AutoLayout

BubblePanel

The BubblePanel packs circular items using a circle packing algorithm, creating a dense, organic bubble arrangement.

BubblePanel

CircularPanel

The CircularPanel arranges items evenly around a circle. Perfect for radial menus, clock faces, or circular arrangements.

CircularPanel

HexPanel

The HexPanel arranges items in a honeycomb hexagonal grid. It supports both flat-topped and pointy-topped hexagons.

HexPanel

LoopPanel

The LoopPanel creates an infinite scrolling experience where children wrap seamlessly. It supports drag gestures, mouse wheel, momentum (inertia), and snap-to-item behavior.

LoopPanel

OrbitPanel

The OrbitPanel arranges child elements in concentric orbit rings around a center point. Items are distributed evenly radiating from the center.

OrbitPanel

OverlapPanel

The OverlapPanel stacks children with configurable X/Y offsets, creating card pile or layered effects.

OverlapPanel

RadialPanel

The RadialPanel positions items in a circular or spiral fan arrangement. It supports configurable radius, start/sweep angles, and item rotation.

RadialPanel

ResponsivePanel

The ResponsivePanel is an adaptive panel that toggles visibility of children based on breakpoints (Mobile/Desktop switching).

ResponsivePanel

StaggeredPanel

The StaggeredPanel positions items in a staggered grid, creating a masonry-like effect by filling the shortest column first.

StaggeredPanel

TimelinePanel

The TimelinePanel arranges items in a timeline or step-by-step flow with connecting lines between items.

TimelinePanel

VariableSizeWrapPanel

The VariableSizeWrapPanel arranges varying-sized items in a wrapping grid, permitting items to span multiple rows and columns similar to the Windows Start Screen.

VariableSizeWrapPanel

VirtualizingStaggeredPanel

The VirtualizingStaggeredPanel is a high-performance staggered grid optimized for large datasets (1000+ items). It works seamlessly with ItemsControl and ScrollViewer.

VirtualizingStaggeredPanel

VirtualizingVariableSizeWrapPanel

The VirtualizingVariableSizeWrapPanel is a high-performance variable-size tile grid optimized for large datasets. Supports ColumnSpan and RowSpan attached properties for tiles spanning multiple cells.

VirtualizingVariableSizeWrapPanel

Contribute

Do you want to contribute?.

Found a Bug?

If you find a bug, you can help me by submitting an issue. Even better, you can submit a Pull Request with a fix.

Submitting a pull request

For every contribution, you must:

  • Test your code.
  • target main branch (or an appropriate release branch if appropriate for a bug fix).

To build all NuGet and symbol packages locally, run:

./build/pack-nuget.sh 1.0.0

See Releasing Nova Avalonia UI for the tag-based automated release process.

Feedback or Requests

Use GitHub Issues for bug reports and feature requests.

Copyright and license

Code released under the MIT license.

About

Nova.Avalonia.UI is a comprehensive suite of UI controls for Avalonia UI.

Topics

Resources

Stars

92 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages