A CLI-first Blazor component library inspired by shadcn/ui.
Copy component source into your project or reference the components package.
| Channel | Version | Notes |
|---|---|---|
| Latest prerelease (recommended) | 0.3.0-rc.2 |
.NET 10, Tailwind CSS 4.3.2 |
| Latest stable | 0.2.1 |
Older release; superseded once 0.3.0 ships |
Prereleases are not picked up by a plain install, so pass --version 0.3.0-rc.2 explicitly. Projects still on .NET 9 can use 0.3.0-rc.1, the last release that targets .NET 9.
ShellUI is prerelease software. Validate it in your target Blazor and hosting environments before relying on it.
- The CLI commands are
init,add,list,remove, andupdate, plustheme init,theme apply, andtheme update. - The component registry has 194 entries: 90 direct install targets and 104 hidden dependency entries.
listshows direct targets;addresolves hidden dependencies. 0.3.0-rc.2addstyped-select,command-palette,data-picker,multi-select,tag-input,donut-chart,radar-chart, andradial-chart.ShellUI.Componentssupports a release-generated precompiled CSS bundle and a generated safelist for existing Tailwind builds.- The CLI can install source with Tailwind's standalone executable or an npm-based build. The current Tailwind baseline is
4.3.2. - The repository and demo have migrated to .NET 10. The demo is
NET10/BlazorInteractiveServer.
- .NET 10 SDK
- A .NET 10 Blazor project
- Tailwind CSS
4.3.2via either:- the standalone CLI, which does not require Node.js; or
- npm, which requires Node.js and npm
The published global tool is named shellui:
dotnet tool install --global ShellUI.CLI --version 0.3.0-rc.2
shellui --helpA local .NET tool is invoked as dotnet shellui:
dotnet new tool-manifest
dotnet tool install --local ShellUI.CLI --version 0.3.0-rc.2
dotnet shellui --helpThe workflow is:
shellui init
shellui add button card dialog
shellui list
shellui remove button
shellui updateUse the same commands with a dotnet prefix when the tool is installed locally. Do not use dotnet shellui for a global installation.
New CLI sidebar installs use the host-loaded shellui.js; the legacy sidebar-js module remains available only for older generated providers.
| Command | Purpose |
|---|---|
init |
Set up ShellUI, Tailwind, host wiring, and the generated project structure |
add <components...> |
Install one or more direct targets and their hidden dependencies |
list |
List direct targets, installed targets, or targets still available |
remove <components...> |
Remove named installed components |
update [components...] |
Reinstall named or all installed templates |
theme init <url-or-id> |
Initialize a project and apply a tweakcn theme |
theme apply <url-or-id> |
Apply a theme to wwwroot/input.css or emit override CSS |
theme update |
Re-fetch the source recorded in shellui.theme.lock |
The targets added in 0.3.0-rc.2 can be installed together:
shellui add typed-select command-palette data-picker multi-select tag-input donut-chart radar-chart radial-chartdotnet add package ShellUI.Components --version 0.3.0-rc.2ShellUI.Core and ShellUI.Templates are internal projects and must not be installed by consumers.
The package supports two CSS workflows.
Release packaging generates shellui-all.css, so the consuming project does not need its own Tailwind build:
<link href="_content/ShellUI.Components/shellui-all.css" rel="stylesheet" />@using ShellUI.ComponentsThe generated bundle is not checked into the repository. Before packing locally, run bash scripts/rebuild-precompiled-css.sh; the release pipeline runs the same script automatically.
For a project that already builds Tailwind, the package build target writes wwwroot/shellui-classes.txt. Reference it from the input stylesheet:
@import "tailwindcss";
@source "./shellui-classes.txt";The safelist lets Tailwind emit the classes used by ShellUI components even when the component assembly is supplied as a compiled package.
The CLI can fetch public themes from tweakcn:
shellui theme init https://tweakcn.com/themes/THEME_ID
shellui theme apply https://tweakcn.com/themes/THEME_ID
shellui theme apply https://tweakcn.com/themes/THEME_ID --emit-override wwwroot/theme.css
shellui theme updatetheme apply updates the sentinel-marked theme region in wwwroot/input.css and preserves content outside that region. --emit-override writes standalone theme variables for use after a precompiled stylesheet. The source URL and content hash are recorded in shellui.theme.lock so theme update can fetch the same theme again.
The solution is ShellUI.slnx:
dotnet restore ShellUI.slnx
dotnet build ShellUI.slnx
dotnet test ShellUI.slnxThe .NET 10 Blazor Interactive Server demo is outside that solution:
dotnet run --project NET10/BlazorInteractiveServer/BlazorInteractiveServer.csprojDirectory.Build.props holds the single version used by every project. Only ShellUI.CLI and ShellUI.Components are packable; ShellUI.Core, ShellUI.Templates, the test project, and the safelist generator are not published packages.
ShellUI uses semantic Blazor and Tailwind patterns, but accessibility depends on the component, configuration, and host application. Test keyboard use, focus behavior, contrast, and assistive-technology output in the consuming application.
Each section of the release notes describes only the release it is named after.
- Inspired by shadcn/ui for the CLI-first approach
- Forked from Sysinfocus simple/ui by @sysinfocus