ShellUI Logo
ShellUI

ShellUI Documentation

CLI-first Blazor component library inspired by shadcn/ui

Welcome to ShellUI v0.3.0-rc.1, the release candidate for v0.3.0 of the CLI-first Blazor component library inspired by shadcn/ui. This RC bundles five branches of integration-tested fixes against the alpha series, surfaced from real-world Blazor Server consumer use.

v0.3.0-rc.1 — Release CandidateTemplate Compilation FixedCSP-safe (no eval)Idempotent shellui init

Heads up: rc.1 is feature-frozen for the v0.3.0 line. If no blocking issues surface during internal testing, v0.3.0 final ships from this RC unchanged.

Getting Started

Installation

Choose your preferred installation method:

CLI Installation (Recommended)

# Install the release candidate CLI
dotnet tool install -g ShellUI.CLI --version 0.3.0-rc.1

# Or upgrade from alpha.2
dotnet tool update -g ShellUI.CLI --version 0.3.0-rc.1

# Initialize in your Blazor project (now idempotent — re-runs safely)
shellui init

# Add components
shellui add button input card table chart drawer sheet

NuGet Package

dotnet add package ShellUI.Core --version 0.3.0-rc.1 --prerelease
dotnet add package ShellUI.Components --version 0.3.0-rc.1 --prerelease

Quick Example

<Card>
  <CardHeader>
    <CardTitle>Welcome to ShellUI</CardTitle>
    <CardDescription>Build beautiful Blazor applications</CardDescription>
  </CardHeader>
  <CardContent>
    <p>Your content goes here.</p>
  </CardContent>
</Card>

Component Categories

Explore our comprehensive component library, organized by category:

What's Fixed in v0.3.0-rc.1

Everything from the alpha.2 feature surface is here, plus integration fixes:

  • Template compilation: ChartVariants, PieChart, and DashboardLayout02 templates had uncompilable C# with improperly escaped quotes in verbatim strings — fixed. Same backslash-escaping bug fixed in the live PieChart.razor.
  • CSP-safe runtime: ThemeToggle, InputOTP, and ThemeService no longer use eval(). localStorage reads moved to proper Blazor lifecycle methods.
  • Idempotent shellui init: patches App.razor with render modes, theme bootstrap scripts, and shellui.js references. Writes the full default theme to input.css instead of just the Tailwind import. Re-running is safe.
  • Component install fixes: shellui add data-table now properly installs DataTableModels.cs and auto-installs NuGet dependencies (System.Linq.Dynamic.Core, Blazor-ApexCharts). Chart tooltips render readable text instead of invisible white-on-white.
  • CLI ergonomics: typo suggestions added (e.g. "Did you mean 'data-table'?").
  • SidebarTrigger: now uses inline SVG instead of FontAwesome dependency for the mobile hamburger menu.
  • Component count clarified: 68 installable top-level components (corrected from earlier claims of 100).

Carries forward from alpha.1/alpha.2:

  • Drawer/Sheet compositional pattern: DrawerTrigger, DrawerContent, SheetTrigger, SheetContent — no external open state required
  • Compositional APIs across NavigationMenu, Tabs, Dropdown, Popover, Collapsible, and Accordion
  • Components added during alphas: Callout, CopyButton, LinkCard, PrevNextNav, Sonner, Stepper

Key Features

  • CLI-First: Copy components directly to your codebase for full control
  • Hybrid Workflow: CLI + NuGet packages for maximum flexibility
  • Tailwind CSS v4.1.18: Modern styling with standalone CLI (no Node.js required)
  • Production-Ready Components: Comprehensive component library
  • Type-Safe Variants: CVA patterns with full C# type safety
  • Accessible: WCAG 2.1 AA compliant by default
  • Performance Optimized: Built for both Server and WASM scenarios
  • Customizable: Easy theme customization with CSS variables

Architecture

ShellUI offers a unique hybrid approach:

  • Copy Components: Like shadcn/ui, components are copied to your project
  • NuGet Option: Traditional package installation for quick starts
  • Tailwind Integration: Standalone CLI or npm setup options
  • Build Integration: Automatic CSS compilation on project build

Theming

Customize your theme instantly with tweakcn or modify CSS variables:

:root {
  --background: oklch(0.9900 0 0);
  --foreground: oklch(0 0 0);
  --primary: oklch(0 0 0);
  --primary-foreground: oklch(1 0 0);
  --secondary: oklch(0.9400 0 0);
  --secondary-foreground: oklch(0 0 0);
  /* ... more variables */
}

Learn More

On this page