BlueBlazor 5.1.0
dotnet add package BlueBlazor --version 5.1.0
NuGet\Install-Package BlueBlazor -Version 5.1.0
<PackageReference Include="BlueBlazor" Version="5.1.0" />
<PackageVersion Include="BlueBlazor" Version="5.1.0" />
<PackageReference Include="BlueBlazor" />
paket add BlueBlazor --version 5.1.0
#r "nuget: BlueBlazor, 5.1.0"
#:package BlueBlazor@5.1.0
#addin nuget:?package=BlueBlazor&version=5.1.0
#tool nuget:?package=BlueBlazor&version=5.1.0
Blue Blazor
Blue Blazor is an adaptation of Blue Web for Blazor.
Getting started
Create project
Use one of the official Blazor project templates like Blazor Web App or Blazor Server App (Empty) to create a new project using Visual Studio or CLI. Make sure, no sample content will be added.
Installation
dotnet add package BlueBlazor
Import
To make use of Blue Blazor, add the following to your _Imports.razor file:
@using BlueBlazor.Components
@using BlueBlazor.Shared
Register services
To use Blue Blazor components, you need to register the required services. Add the following lines to your Program.cs file:
builder.Services.AddBlueBlazor();
If you use DevExpress components you can should enable the DevExpressSupport support to avoid problems when using dialogs:
builder.Services.AddBlueBlazor(options =>
{
options.DevExpressSupport = true;
});
Stylesheet
You can use the stylesheet of Blue Web by adding the following line to the head of your HTML:
<link rel="stylesheet" href="_content/BlueBlazor/blue-web/style.min.css" />
In .NET 9 or higher you can do it like this:
<link rel="stylesheet" href="@Assets["_content/BlueBlazor/blue-web/style.min.css"]">
Font family
As mentioned in Blue Web docs, Inter (licensed under SIL) with some default font settings is preconfigured. Blue Blazor ships the required files. You can embed them like this:
<link rel="stylesheet" href="_content/BlueBlazor/inter/web/inter.css">
In .NET 9 or higher you can do it like this:
<link rel="stylesheet" href="@Assets["_content/BlueBlazor/inter/web/inter.css"]">
Dynamic color mode
To support dynamic color modes (light/dark) using JavaScript you need to add the following script:
<script src="_content/BlueBlazor/blue-web/js/color-mode.js" type="module"></script>
In .NET 9 or higher you can do it like this:
<script src="@Assets["_content/BlueBlazor/blue-web/js/color-mode.js"]" type="module"></script>
Add layout
Put this to your MainLayout.razor file:
<Layout>
<SideContent>
<MenuItem Label="Home" Href="">
<Icon>🏠</Icon>
</MenuItem>
</SideContent>
<PageContent>@Body</PageContent>
</Layout>
Add page
Your project probably already has at least one page component. Change its content to this:
@page "/"
<div class="container">
<h1>Hello, world!</h1>
</div>
Next steps
You now have a very basic app with Blue Blazor. To learn more, check out the examples and the component docs.
Theming
You can use the Theme Generator on Blue Web to create custom themes. Then add the exported CSS to your project. It needs to be embedded after the Blue Blazor stylesheet:
<link rel="stylesheet" href="_content/BlueBlazor/blue-web/style.min.css" />
<link rel="stylesheet" href="css/your-theme.css" />
To support dark mode, you should create a separated theme. You can then use media queries to switch between the themes:
<link rel="stylesheet" href="_content/BlueBlazor/blue-web/style.min.css" />
<link
rel="stylesheet"
href="css/your-light-theme.css"
media="(prefers-color-scheme: light)"
/>
<link
rel="stylesheet"
href="css/your-dark-theme.css"
media="(prefers-color-scheme: dark)"
/>
Use JavaScript from Blue Web
Blue Blazor comes with the whole output folder of Blue Web in it's wwwroot folder.
That means, you can use all of Blue Web's JavaScript functions.
Example 1: Progress
@inject IJSRuntime JSRuntime
<script src="_content/BlueBlazor/blue-web/js/progress.bundle.js"></script>
<Button Label="Load data" OnClick="loadData" />
@code {
async Task loadData()
{
await JSRuntime.InvokeVoidAsync("window.blueWeb.progress.start");
// do something to load data
JSRuntime.InvokeVoidAsync("window.blueWeb.progress.stop");
}
}
Example 2: Dialog
@inject IJSRuntime JSRuntime
<script src="_content/BlueBlazor/blue-web/js/dialog.bundle.js"></script>
<Button Label="Delete" OnClick="delete" />
@code {
async Task delete()
{
bool confirmed = await JSRuntime.InvokeAsync<bool>("blueWeb.dialog.verify", "Are you sure?");
if (confirmed)
{
// do something to delete
}
}
}
Breaking changes
From v4 to v5
These rarely used components were removed:
BodyHeaderSidebarToggler
You no longer have to manually embed JavaScript files by Blue Blazor.
- <script src="_content/BlueBlazor/js/qrCodeGen.bundle.js"></script>
- <script src="_content/BlueBlazor/js/totpInput.bundle.js"></script>
- <script src="_content/BlueBlazor/js/all.bundle.js"></script>
Menu Item changes:
- Removed Props
- DropdownContent - Use
Collapseor combination withPopover - IconClass
- LabelClass
- Draggable - You can still add
draggableattribute, but the styling has been removed. - HideDraggableIcon
- HideChevronIcon
- ShowDropdown
- ShdowDropdownChanged
- SupportOutside
- OutsideIgnoreClasses
- DropdownContent - Use
- Renamed Props
- IconForActive → IconForCurrent
- IsActive → Current
- Highlighted → Active
From v3 to v4
Dialogs (Modal and Offcanvas) now use the new DialogService to open dialogs. Also these components were removed:
ModalOffcanvas
Instead, you can use the DialogService to open dialogs. With <DialogProvider /> you define the place where the dialogs will be rendered.
To open a dialog, you can use the new DialogOpener component together with ModalDialog or OffcanvasDialog:
- <Modal TitleText="Modal Title">
- <ToggleContent><Button Label="Show Modal" /></ToggleContent>
- <BodyContent>
- <p>Modal body content</p>
- </BodyContent>
- </Modal>
+ <DialogOpener>
+ <ToggleContent><Button Label="Show Modal" /></ToggleContent>
+ <DialogContent>
+ <ModalDialog TitleText="Modal Title">
+ <BodyContent>
+ <p>Modal body content</p>
+ </BodyContent>
+ </ModalDialog>
+ </DialogContent>
+ </DialogOpener>
For more information, check out the Getting Started section above and the doc pages for DialogProvider and DialogOpener.
From v2 to v3
Component Text has been renamed to TextInput to avoid conflicts with <text></text> and for a more fitting name. Also the default styling for the label has changed. You can the look back by using the SmallLabel attribute.
From v1 to v2
The way to embed Blue Web CSS has changed. You now need to change the following line to the head of your HTML:
- <link rel="stylesheet" href="_content/BlueBlazor/css/blue-web.min.css" />
+ <link rel="stylesheet" href="_content/BlueBlazor/blue-web/style.min.css" />
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.AspNetCore.Components.Web (>= 8.0.11)
- Microsoft.Extensions.Localization (>= 8.0.11)
-
net8.0
- Microsoft.AspNetCore.Components.Web (>= 8.0.11)
- Microsoft.Extensions.Localization (>= 8.0.11)
-
net9.0
- Microsoft.AspNetCore.Components.Web (>= 8.0.11)
- Microsoft.Extensions.Localization (>= 8.0.11)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 5.1.0 | 163 | 12/5/2025 |
| 5.0.0 | 185 | 11/26/2025 |
| 4.8.0 | 269 | 11/13/2025 |
| 4.7.2 | 192 | 10/30/2025 |
| 4.7.1 | 179 | 10/27/2025 |
| 4.7.0 | 178 | 10/27/2025 |
| 4.6.0 | 173 | 10/20/2025 |
| 4.5.10 | 169 | 10/9/2025 |
| 4.5.9 | 172 | 10/6/2025 |
| 4.5.8 | 184 | 10/2/2025 |
| 4.5.7 | 156 | 9/26/2025 |
| 4.5.6 | 173 | 9/24/2025 |
| 4.5.5 | 171 | 9/22/2025 |
| 4.5.4 | 300 | 9/18/2025 |
| 4.5.3 | 180 | 9/9/2025 |
| 4.5.2 | 188 | 9/3/2025 |
| 4.5.1 | 150 | 8/15/2025 |
| 4.5.0 | 256 | 8/7/2025 |
| 4.4.2 | 254 | 8/5/2025 |
| 4.4.1 | 568 | 7/22/2025 |
| 4.4.0 | 188 | 7/9/2025 |
| 4.3.1 | 195 | 6/23/2025 |
| 4.3.0 | 291 | 6/13/2025 |
| 4.2.1 | 211 | 6/2/2025 |
| 4.2.0 | 190 | 5/28/2025 |
| 4.1.0 | 188 | 5/19/2025 |
| 4.0.2 | 289 | 5/13/2025 |
| 4.0.1 | 169 | 5/9/2025 |
| 4.0.0 | 194 | 4/29/2025 |
| 3.5.1 | 291 | 4/14/2025 |
| 3.5.0 | 248 | 3/10/2025 |
| 3.4.2 | 162 | 2/26/2025 |
| 3.4.1 | 159 | 2/25/2025 |
| 3.4.0 | 153 | 2/24/2025 |
| 3.3.0 | 181 | 2/10/2025 |
| 3.2.0 | 158 | 1/20/2025 |
| 3.1.0 | 145 | 12/20/2024 |
| 3.0.2 | 157 | 11/26/2024 |
| 3.0.1 | 147 | 11/25/2024 |
| 3.0.0 | 152 | 11/25/2024 |
| 2.1.1 | 165 | 10/25/2024 |
| 2.1.0 | 151 | 10/23/2024 |
| 2.0.0 | 167 | 10/10/2024 |
| 1.1.4 | 164 | 9/25/2024 |
| 1.1.3 | 153 | 9/20/2024 |
| 1.1.2 | 184 | 9/18/2024 |
| 1.1.1 | 203 | 9/5/2024 |
| 1.1.0 | 179 | 9/4/2024 |
| 1.0.5 | 206 | 8/8/2024 |
| 1.0.4 | 129 | 8/5/2024 |
| 1.0.3 | 156 | 8/1/2024 |
| 1.0.2 | 160 | 7/30/2024 |