A modern Blazor component library powered by Tailwind CSS v4.
192 components - Blazor WASM / Server / MAUI Hybrid - Light / Dark / System - Zero external JS dependencies
MyStackBlazor is a production-ready UI library for .NET 10 Blazor applications.
- 192 components across Common, Form, Layout, Navigation, Overlays, Data, Charts, Blocks, and Templates
- Tailwind CSS v4 styling (precompiled CSS included)
- Built-in theming via
ThemeServiceandStackThemeProvider - Accessibility-focused patterns and keyboard support
- Optional modular packages for DataGrid, Security, Accessibility, Localization, and Core primitives
dotnet add package MyStackBlazorOr manually:
<PackageReference Include="MyStackBlazor" Version="1.2.2" />builder.Services.AddMyStackBlazor();Add in wwwroot/index.html (WASM) or your host/app shell:
<link rel="stylesheet" href="_content/MyStackBlazor/css/mystackblazor.css" />
<script src="_content/MyStackBlazor/js/mystackblazor.js"></script>In _Imports.razor:
@using MyStackBlazor
@using MyStackBlazor.Components
@using MyStackBlazor.Components.Common
@using MyStackBlazor.Components.Form
@using MyStackBlazor.Components.Navigation
@using MyStackBlazor.Components.Layout
@using MyStackBlazor.Components.Overlays
@using MyStackBlazor.Components.Data
@using MyStackBlazor.Components.Charts
@using MyStackBlazor.Components.Calendar
@using MyStackBlazor.Components.PivotGrid@inherits LayoutComponentBase
<StackThemeProvider>
<div class="min-h-screen bg-background text-foreground">
<header>
<StackThemeToggle />
</header>
<main>
<StackToaster />
@Body
</main>
</div>
</StackThemeProvider>All public components use the Stack prefix.
<StackButton>Save</StackButton>
<StackDialog @bind-IsOpen="_open">
<StackDialogTitle>Confirm</StackDialogTitle>
</StackDialog>Special names to note:
StackMsCalendarStackMsVirtualListStackMsPivotGrid
@page "/"
<StackCard Class="max-w-xl">
<StackCardHeader>
<StackCardTitle>Welcome</StackCardTitle>
<StackCardDescription>MyStackBlazor is wired up.</StackCardDescription>
</StackCardHeader>
<StackCardContent>
<StackInput @bind-Value="_name" Placeholder="Your name" />
</StackCardContent>
<StackCardFooter>
<StackButton OnClick="Save">Save</StackButton>
</StackCardFooter>
</StackCard>
@code {
private string _name = string.Empty;
private void Save() { }
}StackThemeProvider applies and persists theme state. Use ThemeService in any component:
@inject ThemeService ThemeService
ThemeService.SetTheme(AppTheme.Light);
ThemeService.SetTheme(AppTheme.Dark);
ThemeService.SetTheme(AppTheme.System);
ThemeService.Toggle();
bool isDark = ThemeService.IsDark;StackButton, StackBadge, StackAvatar, StackIcon, StackTypography, StackLabel, StackSeparator, StackSkeleton, StackSpinner, StackThemeToggle
StackInput, StackTextarea, StackSelect, StackCheckbox, StackSwitch, StackRadioGroup, StackNumericInput, StackSlider, StackRangeSlider, StackDatePicker, StackDateRangePicker, StackDateTimePicker, StackTimePicker, StackInputOtp, StackColorPicker, StackColorPalette, StackMaskedTextBox, StackMultiSelect, StackCombobox, StackAutoComplete, StackListBox, StackFileUpload
StackCard, StackAccordion, StackCollapsible, StackScrollArea, StackAspectRatio, StackGridLayout, StackStackLayout, StackSplitter, StackCarousel, StackPanelBar, StackLoader, StackAnimationContainer
StackTabs, StackBreadcrumb, StackPagination, StackSidebar, StackAppBar, StackMenubar, StackDropdownMenu, StackContextMenu, StackToggleButton, StackToolbar, StackStepper, StackWizard, StackWorkflow
StackDialog, StackAlertDialog, StackSheet, StackDrawer, StackPopover, StackPopup, StackTooltip, StackHoverCard, StackWindow, StackToaster, StackImageViewer, StackFileViewer
StackAlert, StackTable, StackDataTable, StackAdvancedTable, StackPivotGrid, StackTreeView, StackTreeList, StackListView, StackFileManager, StackMsVirtualList, StackMsCalendar, StackMsPivotGrid
StackLineChart, StackBarChart, StackPieChart, StackGaugeChart
Reusable page blocks and full templates exist under src/MyStackBlazor/Components/Blocks and src/MyStackBlazor/Components/Templates.
For a detailed catalog and notes, see COMPONENTS.md.
Manages light/dark/system theme state.
Global notifications via StackToaster + ToastService:
@inject ToastService Toast
Toast.Show("Saved successfully!", ToastType.Success);
Toast.Show("Something went wrong.", ToastType.Error);builder.Services.AddMauiBlazorWebView();
builder.Services.AddMyStackBlazor();Use the same _content/MyStackBlazor/... CSS/JS asset references in your MAUI web root.
MyStackBlazor(main package, 192 components)MyStackBlazor.CoreMyStackBlazor.DataGridMyStackBlazor.AccessibilityMyStackBlazor.LocalizationMyStackBlazor.Security
Install any add-on package with:
dotnet add package MyStackBlazor.DataGrid# Restore
dotnet restore
# Build library
dotnet build src/MyStackBlazor/MyStackBlazor.csproj
# Build demo
dotnet build samples/MyStackBlazor.Demo/MyStackBlazor.Demo.csprojTailwind rebuild from src/MyStackBlazor:
npm install
npx @tailwindcss/cli -i ./tailwind/input.css -o ./wwwroot/css/mystackblazor.css --minifyPack NuGet:
./pack.ps1- Fork the repo
- Create a branch:
git checkout -b feat/my-change - Commit your changes
- Open a pull request
MIT (c) 2025 Vilas Sagar