ShellIcons.Blazor
0.1.0-alpha
dotnet add package ShellIcons.Blazor --version 0.1.0-alpha
NuGet\Install-Package ShellIcons.Blazor -Version 0.1.0-alpha
<PackageReference Include="ShellIcons.Blazor" Version="0.1.0-alpha" />
<PackageVersion Include="ShellIcons.Blazor" Version="0.1.0-alpha" />
<PackageReference Include="ShellIcons.Blazor" />
paket add ShellIcons.Blazor --version 0.1.0-alpha
#r "nuget: ShellIcons.Blazor, 0.1.0-alpha"
#:package ShellIcons.Blazor@0.1.0-alpha
#addin nuget:?package=ShellIcons.Blazor&version=0.1.0-alpha&prerelease
#tool nuget:?package=ShellIcons.Blazor&version=0.1.0-alpha&prerelease
ShellIcons
Lucide-derived SVG icons for Blazor, Avalonia, and .NET MAUI.
- Zero JS, zero required CSS
- Same visual system across all three .NET UI frameworks
- Native rendering per target: inline
<svg>in Blazor, nativePathshapes in Avalonia/MAUI - Tree-shakeable typed components per icon
See SHELLICONS.md for the full design proposal.
Status
Docs live in dev, Phase 2 complete — full Lucide 0.475.0 catalog (1555 icons) auto-generated for Blazor.
- Design doc
- Solution scaffold
- Blazor
IconCorewith Size/StrokeWidth/Class/Title/AbsoluteStroke props - Lucide catalog sync script (pinned via
LUCIDE_VERSION.txt) -
catalog/custom/drop-in path for repo-owned icons - Roslyn incremental source generator — reads both
catalog/lucide/andcatalog/custom/, emits 1555 typed components +ShellIcondispatcher - Test suite: 46 unit + integration tests (xUnit + bUnit)
- Docs site at docs/ShellIcons.Docs — ShellDocs-powered, runs at
dotnet runon http://localhost:5145 - Live icon browser at
/icons— searchable, 1555-cell grid with click-to-copy - GH Pages workflow +
CNAMEfor shellicons.shellui.dev - CI + Release pipelines — see RELEASING.md for the runbook
- Blocker:
shelldocs.clibuild doesn't emitindex.htmlor the WASM runtime — GH Pages deploy waits on a CLI fix upstream - First publish
ShellIcons.Blazor 0.1.0-alphato NuGet — bump version, tagv0.1.0-alpha, approve in the Actions UI - Avalonia target (Phase 4)
- MAUI target (Phase 5)
Blazor quickstart
Not yet published. During development:
<ProjectReference Include="path/to/src/ShellIcons.Blazor/ShellIcons.Blazor.csproj" />
Typed icons (tree-shakeable) — import the ShellIcons.Icons namespace per page (imports live in a sub-namespace so common names like Router or Activity don't collide with Blazor/system types unless you opt in):
@using ShellIcons.Icons
<ChevronRight />
<Zap Size="16" StrokeWidth="1.5" />
<TriangleAlert Class="text-warning" />
Dispatcher (ships the full 1555-icon catalog — trimmer-hostile, use for dynamic lookups) — lives in ShellIcons:
@using ShellIcons
<ShellIcon Name="chevron-right" />
<ShellIcon Name="@page.IconName" Size="20" />
Colors inherit from CSS:
<span style="color: crimson">
<TriangleAlert Size="20" />
</span>
Accessibility:
<X Title="Close dialog" />
Repo layout
shell-icons/
├── SHELLICONS.md design proposal
├── LUCIDE_VERSION.txt pinned upstream tag
├── NOTICE.md Lucide ISC attribution
├── ShellIcons.slnx
├── Directory.Build.props
├── catalog/
│ ├── lucide/icons/ vendored Lucide SVGs (populated by sync-lucide.ps1)
│ └── custom/ repo-owned SVGs, drop-in
│ ├── README.md drop-in contract
│ └── icons/
├── scripts/
│ └── sync-lucide.ps1 refresh vendored Lucide catalog
├── src/
│ ├── ShellIcons.Blazor/ Razor Class Library (net8.0;net9.0)
│ └── ShellIcons.Generator/ Roslyn incremental source generator (netstandard2.0)
├── tests/
│ ├── ShellIcons.Generator.Tests/ xUnit: SvgParser, Naming
│ └── ShellIcons.Blazor.Tests/ xUnit + bUnit: IconCore, generated icons, dispatcher
├── docs/
│ └── ShellIcons.Docs/ ShellDocs site — dev at http://localhost:5145
└── .github/workflows/
└── docs.yml GH Pages deploy pipeline (waits on shelldocs.cli fix)
Docs
Run the docs locally:
cd docs/ShellIcons.Docs
dotnet run
Serves at http://localhost:5145. Pages live in docs/ShellIcons.Docs/content/docs/*.md. Live component previews via razor:preview code fences work out of the box.
The /icons route is a searchable browser of the entire catalog with click-to-copy component names.
Refreshing the Lucide catalog
./scripts/sync-lucide.ps1 # pinned version
./scripts/sync-lucide.ps1 -Version 0.480.0 # bump + repin
Adding custom icons
Drop an SVG into catalog/custom/icons/ and rebuild — the Phase 2 source generator picks it up automatically and emits a component into ShellIcons.Blazor. Same 24×24 stroke contract as Lucide. See catalog/custom/README.md for the drop-in contract.
Custom icons live alongside Lucide-derived icons in the same namespace; consumers can't tell them apart. Use them for:
- Fill variants of Lucide icons (active-state UI, e.g.
HouseFillednext toHouse) - Brand marks and product-specific glyphs
- Full overrides of a Lucide icon — custom wins on name collision
Licensing
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. 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. |
-
net8.0
- Microsoft.AspNetCore.Components.Web (>= 8.0.0)
-
net9.0
- Microsoft.AspNetCore.Components.Web (>= 9.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ShellIcons.Blazor:
| Package | Downloads |
|---|---|
|
ShellDocs.Components
Blazor RCL for ShellDocs: DocsLayout, sidebar, header, search, TOC, version and package selectors, plus content primitives (Callout, Card, Steps, Tabs, CodeGroup, FileTree, TypeTable, live component previews). |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-alpha | 124 | 8/22/2026 |