Answers for the current ShellUI source and the currently published packages.
Use 0.3.0-rc.2. It targets net10.0, uses Tailwind CSS 4.3.2, and exposes 90 direct component targets. A plain install selects the older stable 0.2.1, so select the prerelease explicitly:
dotnet tool install -g ShellUI.CLI --version 0.3.0-rc.2Projects still on .NET 9 can use 0.3.0-rc.1, the last release targeting .NET 9.
Use shellui for a global installation. After dotnet new tool-manifest and a local tool install, use dotnet shellui.
shellui --version
dotnet shellui --versionShellUI.Components is a NuGet package. It provides compiled Razor components in the ShellUI.Components namespace and is updated by changing the package version and restoring the project.
The CLI copies source templates into the application. Components go in Components/UI/, and layout blocks go in Components/Layout/. You own and edit those files.
dotnet add package ShellUI.Components
shellui init
shellui add button cardThe package and CLI can be used in the same project, but avoid defining the same component in both namespaces. Choose the package or the local source for a given component.
Yes. add accepts space-separated names, comma-separated names, or both:
shellui add button input card
shellui add button,input,card
shellui add button,card dialogUse the exact names printed by shellui list. Dependency-only entries are installed automatically and are not counted among the 90 direct targets.
Use the registry names, such as button, input, card, dialog, dropdown, date-picker, radio-group, file-upload, data-table, and chart. Do not translate a target into a guessed component name.
Not for standalone mode:
shellui init --yes --tailwind standaloneStandalone mode downloads the Tailwind 4.3.2 CLI into .shellui/bin/ and integrates it with the generated build target.
npm mode is also supported. It requires Node.js and npm:
shellui init --yes --tailwind npm
npm install -D tailwindcss@^4.3.2 @tailwindcss/cli@^4.3.2
npx @tailwindcss/cli -i ./wwwroot/input.css -o ./wwwroot/app.css --watchThe npm commands are Tailwind v4 commands. The generated wwwroot/input.css uses @import "tailwindcss";; wwwroot/app.css is generated output. The current CLI invokes npm through cmd; on non-Windows systems use standalone mode or run the npm commands manually.
shellui list
shellui list --installed
shellui list --availableThere are 90 direct targets. Use the command output as the authoritative name list.
update overwrites the selected source template without showing a diff, merging changes, or asking for a force flag:
shellui update button
shellui update button card
shellui update --allRunning shellui update without names also updates all installed components. Commit or back up local changes first.
remove deletes the named component files and updates shellui.json. It has no options and does not perform reverse-dependency cleanup. Layout blocks such as dashboard-01 and dashboard-02 currently require manual removal from Components/Layout because remove is not yet layout-aware:
shellui remove button
shellui remove button cardIf another component still uses a removed file, update that usage or remove the dependent component yourself.
The serialized properties are PascalCase. The main fields are:
| Field | Meaning |
|---|---|
Schema |
Schema identifier |
Style |
default, new-york, or minimal |
ComponentsPath |
Usually Components/UI |
LayoutPath |
Usually Components/Layout |
Tailwind |
Tailwind settings |
InstalledComponents |
Installed component records |
ProjectType |
Detected Blazor project type |
A representative Tailwind and component record is:
{
"Style": "default",
"ComponentsPath": "Components/UI",
"LayoutPath": "Components/Layout",
"Tailwind": {
"Enabled": true,
"Version": "4.3.2",
"Method": "standalone",
"ConfigPath": "tailwind.config.js",
"CssPath": "wwwroot/app.css"
},
"InstalledComponents": [
{
"Name": "button",
"Version": "0.3.0-rc.2",
"InstalledAt": "2026-01-01T00:00:00Z",
"IsCustomized": false
}
],
"ProjectType": 1
}IsCustomized is metadata only. It does not provide a merge workflow, and update overwrites the file.
Components/UI/wwwroot/input.csswwwroot/app.csstailwind.config.jsBuild/ShellUI.targetsshellui.jsonComponents/_Imports.razorwhen it is present
The host file is Components/App.razor for a Blazor Web App or wwwroot/index.html for a standalone WebAssembly project.
Yes:
shellui theme init <url-or-id> --yes --tailwind standalone
shellui theme apply <url-or-id>
shellui theme apply <url-or-id> --emit-override wwwroot/theme.css
shellui theme updatetheme apply updates wwwroot/input.css unless --emit-override is used. The command records the source in shellui.theme.lock, and theme update re-fetches that source.
Yes. Run the CLI from the project root:
cd MyExistingApp
shellui init --yes --tailwind standalone
shellui add button card
dotnet buildReview the changes to Components/App.razor, Components/_Imports.razor, the project file, and the generated Tailwind files before committing them.
Use the prefix that matches the installation:
shellui --version
dotnet shellui --versionFor a local tool, run dotnet tool restore from the directory containing .config/dotnet-tools.json.
Run:
shellui listUse the exact target name shown in the list.
Check that wwwroot/input.css exists and starts with the Tailwind v4 import, then run:
dotnet buildFor standalone mode, check .shellui/bin/. For npm mode, run npm install.
Pass the version explicitly:
dotnet add package ShellUI.Components --version 0.3.0-rc.2Then restore and build the project.
The repository uses the MIT license. See LICENSE.txt.