Skip to content

Repository files navigation

ShellUI Logo

ShellUI

A CLI-first Blazor component library inspired by shadcn/ui.
Copy component source into your project or reference the components package.

GitHub stars ShellUI.Components on NuGet ShellUI.CLI on NuGet MIT license

Status

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.

Capabilities

  • The CLI commands are init, add, list, remove, and update, plus theme init, theme apply, and theme update.
  • The component registry has 194 entries: 90 direct install targets and 104 hidden dependency entries. list shows direct targets; add resolves hidden dependencies.
  • 0.3.0-rc.2 adds typed-select, command-palette, data-picker, multi-select, tag-input, donut-chart, radar-chart, and radial-chart.
  • ShellUI.Components supports 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.

Requirements

  • .NET 10 SDK
  • A .NET 10 Blazor project
  • Tailwind CSS 4.3.2 via either:
    • the standalone CLI, which does not require Node.js; or
    • npm, which requires Node.js and npm

CLI quick start

The published global tool is named shellui:

dotnet tool install --global ShellUI.CLI --version 0.3.0-rc.2
shellui --help

A 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 --help

The workflow is:

shellui init
shellui add button card dialog
shellui list
shellui remove button
shellui update

Use 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 reference

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-chart

Components package

dotnet add package ShellUI.Components --version 0.3.0-rc.2

ShellUI.Core and ShellUI.Templates are internal projects and must not be installed by consumers.

The package supports two CSS workflows.

Precompiled bundle

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.Components

The 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.

Tailwind safelist

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.

Theme commands

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 update

theme 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.

Repository development

The solution is ShellUI.slnx:

dotnet restore ShellUI.slnx
dotnet build ShellUI.slnx
dotnet test ShellUI.slnx

The .NET 10 Blazor Interactive Server demo is outside that solution:

dotnet run --project NET10/BlazorInteractiveServer/BlazorInteractiveServer.csproj

Directory.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.

Documentation

Each section of the release notes describes only the release it is named after.

License

MIT

Acknowledgments

About

CLI-first Blazor component library inspired by shadcn/ui

Topics

Resources

Contributing

Stars

10 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages