# ShellIcons for Avalonia
> ShellIcons for Avalonia — the same 1,555 icons, drawn natively and colored like text.
Source: https://shellicons.shellui.dev/docs/avalonia/getting-started
The same Lucide catalog as the Blazor and MAUI packages, drawn directly by Avalonia. The SVG is converted at build time, so nothing parses SVG in your app.
> **Preview**
>
> ShellIcons.Avalonia is covered by tests that render every icon through Avalonia's Skia backend and checked in a desktop app, but the API may still change before 1.0.
## Install
```bash
dotnet add package ShellIcons.Avalonia --prerelease
```
Targets `net8.0` and Avalonia 12.1.
## Use in XAML
One namespace covers everything:
```xml
```
There are two forms:
| Form | Example | Use for |
|---|---|---|
| Typed control | `` | Icons fixed in your layout. Each carries its own shape, so unused icons are trimmed. |
| `Icon` dispatcher | `` | Icons that are values — bindings and view-model properties. Keeps the whole catalog. |
The dispatcher's property is `Kind`, not `Name`: in Avalonia, `Name` is the element's own name.
XAML prefixes keep names apart, so `` (the icon) and `` (Avalonia's control) coexist in the same file.
## Properties
| Property | Default | Notes |
|---|---|---|
| `Size` | `24` | Width and height |
| `StrokeThickness` | `2` | On Lucide's 24-unit grid; scales with `Size` |
| `AbsoluteStroke` | `false` | Keeps the rendered stroke at `StrokeThickness` at any size |
| `Foreground` | inherited | Stroke (and fill) brush |
| `Title` | `null` | Accessible name; when null the icon stays out of the accessibility tree |
## Color and theming
`Foreground` is the same inherited property that text uses. An icon takes the color of the text around it, like `currentColor` in the browser, and follows the theme with no extra work:
```xml
```
Set it directly to override, or style every icon at once — `IconView` is the base of both the typed controls and `Icon`:
```xml
```
## Clicks and accessibility
Icons are not hit-test visible: a click goes to the button or row that hosts the icon. To make an icon clickable, put it in a `Button`:
```xml
```
Set `Title` whenever the icon is the only thing conveying meaning. It becomes the icon's automation name, and the icon is exposed to screen readers as an image.
## From C#
```csharp
using Avalonia.Media;
using ShellIcons.Avalonia;
var chevron = new ShellIcons.Avalonia.Icons.ChevronRight { Size = 16 };
var status = new Icon { Kind = IconName.CircleCheck, Foreground = Brushes.Green };
```
The typed controls live in `ShellIcons.Avalonia.Icons` so names like `Image` or `Grid` don't clash with Avalonia's own types in C#.
## How it draws
Each icon is a single custom-drawn control with no child elements. Its path data is the same build-time conversion the MAUI package uses (see [How rendering works](https://shellicons.shellui.dev/docs/maui/rendering.md)); Avalonia turns it into a geometry once per icon and every control showing that icon shares it. Icons are drawn on Lucide's 24×24 grid and scaled to `Size`, so different icons of the same size line up.
## Next
- [Icon names & catalog](https://shellicons.shellui.dev/docs/avalonia/names-and-catalog.md) — `IconName`, aliases, search, bindings