Windzor 1.0.0

The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package Windzor --version 1.0.0
                    
NuGet\Install-Package Windzor -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Windzor" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Windzor" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Windzor" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Windzor --version 1.0.0
                    
#r "nuget: Windzor, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Windzor@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Windzor&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Windzor&version=1.0.0
                    
Install as a Cake Tool

Windzor

Admin dashboard components for Blazor, styled with Tailwind CSS v4.

CI NuGet

Live demo: https://agriffard.github.io/Windzor/

Components

Group Components
Layout WzDashboardLayout, WzSidebar, WzSidebarItem, WzTopBar, WzBreadcrumbs, WzPageHeader, WzUserMenu, WzSplitPane
Display WzCard, WzStatCard, WzTable<TItem> (sortable, loading, row click), WzTableColumn<TItem>, WzBadge, WzAvatar, WzAlert, WzBanner, WzProgressBar, WzSpinner, WzTooltip, WzAccordion, WzAccordionItem, WzEmptyState, WzSkeleton, WzTimeline, WzTimelineItem, WzSparkline, WzCodeBlock, WzDivider, WzDescriptionList, WzDescriptionItem, WzTreeView, WzTreeNode, WzCalendar, WzCarousel, WzCarouselItem, WzScheduler (week view), WzKanban (drag-drop board), WzScrollArea, WzKbd, WzCopyButton, WzDataList<TItem> (virtualized feed), WzImageGallery, WzLightbox, WzChip, WzAvatarGroup, WzRelativeTime
Navigation WzTabs, WzTab, WzPagination, WzDropdown, WzDropdownItem, WzCommandPalette (Ctrl+K), WzStepper, WzStep, WzContextMenu, WzContextMenuItem, WzBackToTop
Overlay WzModal, WzDrawer, WzPopover, WzLoadingOverlay, WzToaster, WzDialogProvider, WzNotificationCenter
Forms WzButton, WzButtonGroup, WzSegmentedControl, WzInputGroup, WzTextInput, WzPasswordInput, WzEditableText, WzTextArea, WzNumberInput, WzSelect, WzAutocomplete<TItem>, WzMultiSelect<TItem>, WzTransferList<TItem>, WzTagInput, WzCheckbox, WzCheckboxGroup, WzCheckboxOption, WzRadioGroup, WzRadioOption, WzToggleSwitch, WzRating, WzSlider, WzRangeSlider, WzDatePicker, WzDateRangePicker, WzTimePicker, WzColorPicker, WzPinInput, WzFileUpload, WzThemeToggle, WzValidationSummary, WzValidationMessage<TValue> (EditForm), WzWizardForm, WzWizardStep
Charts WzBarChart, WzLineChart, WzDonutChart, WzGauge, WzHeatmapCalendar, WzChartLegend — pure SVG, no chart library dependency
Templates WzAuthLayout, WzLoginForm, WzRegisterForm, WzForgotPasswordForm, WzSettingsLayout, WzSettingsSection, WzErrorPage, WzMaintenancePage, WzPricingTable, WzPricingPlan

Services: IToastService (toasts), IDialogService (await Dialogs.ConfirmAsync(...) — requires a <WzDialogProvider /> in the layout) and IClipboardService (await Clipboard.CopyAsync(...)).

All components support dark mode out of the box (dark class on <html>, toggled by WzThemeToggle and persisted in localStorage).

All built-in strings are localizable: AddWindzor(loc => loc.TableEmpty = "Aucune donnée.") sets them globally, or cascade a WzLocalization instance for a subtree. Explicit parameters always win.

Getting started

dotnet add package Windzor

The package ships a prebuilt stylesheet — no Node or Tailwind tooling needed. In wwwroot/index.html:

<link rel="stylesheet" href="_content/Windzor/windzor.css" />
<script>
    // Apply the saved theme before Blazor boots to avoid a flash of light theme.
    (function () {
        var theme = localStorage.getItem('windzor-theme');
        var dark = theme ? theme === 'dark' : window.matchMedia('(prefers-color-scheme: dark)').matches;
        document.documentElement.classList.toggle('dark', dark);
    })();
</script>

In Program.cs:

using Windzor;

builder.Services.AddWindzor();

In _Imports.razor:

@using Windzor

Place a <WzToaster /> and a <WzDialogProvider /> once in your layout, then inject the services anywhere:

@inject IToastService Toasts
@inject IDialogService Dialogs

Toasts.Success("Saved.");

if (await Dialogs.ConfirmAsync("Delete project?", "This cannot be undone.", confirmText: "Delete", danger: true))
{
    // delete it
}

Note (Blazor Server): AddWindzor() registers IToastService as a singleton, which fits WebAssembly. On Blazor Server, register it scoped instead so toasts stay per-circuit.

Example

<WzDashboardLayout>
    <SidebarContent>
        <WzSidebar>
            <Brand><a href="">My App</a></Brand>
            <ChildContent>
                <WzSidebarItem Href="" Match="NavLinkMatch.All">Dashboard</WzSidebarItem>
                <WzSidebarItem Href="orders">Orders</WzSidebarItem>
            </ChildContent>
        </WzSidebar>
    </SidebarContent>
    <HeaderContent>
        <WzTopBar>
            <Actions><WzThemeToggle /></Actions>
        </WzTopBar>
    </HeaderContent>
    <ChildContent>
        @Body
        <WzToaster />
    </ChildContent>
</WzDashboardLayout>

Using your own Tailwind build

If your app already runs Tailwind CSS v4, skip the prebuilt stylesheet and scan the library sources instead, so utilities are deduplicated and tree-shaken together:

@import "tailwindcss";
@custom-variant dark (&:where(.dark, .dark *));
@source "../path/to/your/**/*.razor";

See samples/Windzor.Sample for the full integrated setup.

Theming

Components are styled with CSS-first @theme tokens, so a consumer running their own Tailwind build can rebrand without touching component code:

@import "tailwindcss";

@theme {
    /* Brand color: redefine the primary palette (50–950). */
    --color-primary-500: oklch(0.72 0.15 160);
    --color-primary-600: oklch(0.63 0.14 160);
    --color-primary-700: oklch(0.53 0.12 160);

    /* Corner radius used by every component (default 0.5rem / 0.75rem). */
    --radius-wz: 0.25rem;
    --radius-wz-lg: 0.375rem;
}

If you use the prebuilt stylesheet instead, override the same custom properties in a :root { … } block after the windzor.css link.

Development

Requires the .NET 10 SDK and Node 22+.

npm ci
dotnet build Windzor.slnx
dotnet test Windzor.slnx --no-build
dotnet run --project samples/Windzor.Sample

The Tailwind CLI runs automatically inside the build (MSBuild TailwindBuild target). To build without Node available, pass /p:SkipTailwind=true (works as long as the generated CSS exists from a previous build).

Releasing

  • CI (ci.yml): builds the solution on every push and pull request to main.
  • GitHub Pages (pages.yml): publishes the sample dashboard to https://agriffard.github.io/Windzor/ on every push to main. Requires Pages source set to GitHub Actions in the repository settings.
  • NuGet (nuget.yml): packs and pushes to NuGet.org when a v* tag is pushed (version comes from the tag via MinVer). Requires a NUGET_API_KEY repository secret.
git tag v0.1.0
git push origin v0.1.0

License

MIT

Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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