Rystem.RepositoryFramework.Web.Components 10.0.7

dotnet add package Rystem.RepositoryFramework.Web.Components --version 10.0.7
                    
NuGet\Install-Package Rystem.RepositoryFramework.Web.Components -Version 10.0.7
                    
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="Rystem.RepositoryFramework.Web.Components" Version="10.0.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Rystem.RepositoryFramework.Web.Components" Version="10.0.7" />
                    
Directory.Packages.props
<PackageReference Include="Rystem.RepositoryFramework.Web.Components" />
                    
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 Rystem.RepositoryFramework.Web.Components --version 10.0.7
                    
#r "nuget: Rystem.RepositoryFramework.Web.Components, 10.0.7"
                    
#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 Rystem.RepositoryFramework.Web.Components@10.0.7
                    
#: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=Rystem.RepositoryFramework.Web.Components&version=10.0.7
                    
Install as a Cake Addin
#tool nuget:?package=Rystem.RepositoryFramework.Web.Components&version=10.0.7
                    
Install as a Cake Tool

Rystem.RepositoryFramework.Web.Components

Rystem.RepositoryFramework.Web.Components provides a server-side Blazor admin UI on top of Repository Framework registrations.

It gives you generic pages for:

  • query/list
  • show
  • create
  • edit
  • delete
  • theme and language settings

and lets you customize menu labels, icons, form rendering, localization, and edit-page actions per repository.

Installation

dotnet add package Rystem.RepositoryFramework.Web.Components

What this package actually adds

The package registers:

  • Razor Pages for the built-in UI area
  • package host pages (/_Host and /_AuthorizedHost inside the package area)
  • menu, localization, modal, loading, copy, and Radzen-related services
  • per-repository UI metadata driven by Repository Framework registrations

It does not replace normal Blazor Server setup.

You still need:

  • AddServerSideBlazor()
  • app.MapBlazorHub()
  • your own authentication middleware if you enable authenticated UI

Minimal setup

This is the working shape used by the sample app.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddServerSideBlazor();

builder.Services
    .AddRepositoryUi(settings =>
    {
        settings.Name = "Repository App";
        settings.Icon = "dashboard";
    })
    .AddDefaultSkinForUi();

var app = builder.Build();

app.UseStaticFiles();
app.UseRouting();
app.MapBlazorHub();
app.AddDefaultRepositoryEndpoints();

app.Run();

Main registration API

AddRepositoryUi(...)

builder.Services.AddRepositoryUi(settings =>
{
    settings.Name = "Admin";
    settings.Icon = "savings";
    settings.Image = "/logo.png";
});

AppSettings includes:

Property Notes
Name Required app name shown in the UI
Icon Optional Material icon name
Image Optional top-bar image
Palette Active palette settings
Sizing Sizing and typography settings
RazorPagesForRoutingAdditionalAssemblies Extra assemblies for the Blazor router

AddRepositoryUi<T>(...)

There is also a generic overload intended to add an extra assembly for routing.

Important caveat: the current implementation does not preserve that additional assembly setting correctly, so treat this overload as unreliable for now.

Endpoint mapping

Use:

app.AddDefaultRepositoryEndpoints();

This method:

  • calls UseStaticFiles()
  • enables request localization when configured
  • maps /Repository/Language/{culture}
  • maps /Repository/Settings/Theme/{themeKey}
  • maps /Repository/Identity/Logout when authenticated UI is enabled
  • maps Razor Pages
  • maps fallback to the package host page

It does not map the Blazor hub for you.

Authentication

Use:

builder.Services
    .AddRepositoryUi(settings =>
    {
        settings.Name = "Admin";
    })
    .WithAuthenticatedUi();

What this actually does:

  • switches fallback from the package /_Host page to the package /_AuthorizedHost page
  • enables the logout endpoint at /Repository/Identity/Logout

What it does not do:

  • configure ASP.NET authentication
  • configure cookies or OpenID Connect
  • add UseAuthentication() or UseAuthorization()

Those are still your responsibility.

Localization

Enable built-in localization with:

builder.Services
    .AddRepositoryUi(settings =>
    {
        settings.Name = "Admin";
    })
    .AddDefaultLocalization();

The package then enables language switching through:

  • GET /Repository/Language/{culture}

Important notes:

  • the current supported cultures are hardcoded internally to en-US, es-ES, it-IT, fr-FR, and de-DE
  • the endpoint redirects to the app root, not back to the current page

Per-repository localization

builder.Services
    .AddRepository<AppUser, int>(settings =>
    {
        settings
            .WithLocalization<AppUser, int, IStringLocalizer<SharedResource>>();
    });

Themes and skins

Default skins

builder.Services
    .AddRepositoryUi(settings =>
    {
        settings.Name = "Admin";
    })
    .AddDefaultSkinForUi();

This registers:

  • Light
  • Dark

Custom skin

builder.Services
    .AddRepositoryUi(settings =>
    {
        settings.Name = "Admin";
    })
    .AddDefaultSkinForUi()
    .AddSkinForUi("Corporate", palette =>
    {
        palette.Primary = "#003366";
        palette.Secondary = "#0066cc";
        palette.BackgroundColor = "#f4f6f8";
        palette.Color = "#1a1a2e";
    });

Runtime switching happens through:

  • GET /Repository/Settings/Theme/{themeKey}

Important note: the theme cookie is written with Secure = true, so HTTPS is the safe assumption for real use.

Per-repository customization

These extensions hang off IRepositoryBuilder<T, TKey>.

Method Purpose
SetDefaultUiRoot<T, TKey>() Make this repository the landing page for the package router
DoNotExposeInUi<T, TKey>() Hide the repository from the menu
ExposeFor<T, TKey>(index) Set menu ordering
WithIcon<T, TKey>(icon) Set menu icon
WithName<T, TKey>(name) Set menu label
AddAction<T, TKey, TAction>() Add a custom edit-page action
MapPropertiesForUi<T, TKey, TUiMapper>() Customize form rendering and defaults
WithLocalization<T, TKey, TLocalization>() Attach a localizer for this repository

Example

builder.Services
    .AddRepository<AppUser, int>(settings =>
    {
        settings
            .WithIcon("manage_accounts")
            .WithName("User")
            .ExposeFor(2)
            .SetDefaultUiRoot()
            .MapPropertiesForUi<AppUser, int, AppUserDesignMapper>()
            .WithLocalization<AppUser, int, IStringLocalizer<SharedResource>>();
    });

Custom edit actions

Register actions with AddAction<T, TKey, TAction>().

public sealed class ArchiveUserAction : IRepositoryEditAction<AppUser, int>
{
    public string Name => "Archive";
    public string? IconName => "archive";

    public ValueTask<bool> InvokeAsync(Entity<AppUser, int> entity)
    {
        return ValueTask.FromResult(true);
    }
}

The action appears on the edit page and dependencies are resolved from DI.

Property UI mapping

Implement IRepositoryUiMapper<T, TKey> and register it with MapPropertiesForUi<T, TKey, TUiMapper>().

This lets you configure:

  • default values
  • default values loaded from repositories
  • single-choice dropdowns
  • multi-choice dropdowns
  • text editor behavior

Host pages and runtime requirements

The package ships its own host pages inside the area and maps fallback to them.

The package host includes:

  • <base href="~/" />
  • HeadOutlet
  • RepositoryApp
  • _framework/blazor.server.js
  • the RepositoryStyle and RepositoryScript partials

So you do not need to create your own _Host.cshtml just to use the packaged UI.

Built-in routes

Repository pages:

  • /Repository/{Name}/Query
  • /Repository/{Name}/Create
  • /Repository/{Name}/Edit/{Key}
  • /Repository/{Name}/Show/{Key}
  • /Repository/Settings

Utility endpoints:

  • /Repository/Language/{culture}
  • /Repository/Settings/Theme/{themeKey}
  • /Repository/Identity/Logout when authenticated UI is enabled

If you do not set a default UI root with SetDefaultUiRoot(), unmatched/fallback navigation ends on the router's not-found content.

Important caveats

  • AddRepositoryUi(...) does not replace AddServerSideBlazor() or MapBlazorHub()
  • WithAuthenticatedUi() does not configure auth middleware; it only switches the package host and logout route
  • language and theme endpoints redirect to the app root, not the current page
  • supported cultures are fixed internally
  • AddRepositoryUi<T>(...) is intended for additional router assemblies but is not reliable in the current implementation

When to use this package

Use it when you want:

  • a quick back-office UI over Repository Framework registrations
  • server-side Blazor CRUD screens without hand-writing each page
  • per-repository customization through metadata and DI

If you need a fully custom frontend, this package is better used as a reference or internal admin surface than as the only UI for public-facing workflows.

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
10.0.7 32 3/26/2026
10.0.6 167,368 3/3/2026
10.0.5 100 2/22/2026
10.0.4 102 2/9/2026
10.0.3 147,892 1/28/2026
10.0.1 209,111 11/12/2025
9.1.3 240 9/2/2025
9.1.2 764,440 5/29/2025
9.1.1 97,838 5/2/2025
9.0.32 186,710 4/15/2025
9.0.31 5,789 4/2/2025
9.0.30 88,819 3/26/2025
9.0.29 9,028 3/18/2025
9.0.28 256 3/17/2025
9.0.27 249 3/16/2025
9.0.26 271 3/13/2025
9.0.25 52,148 3/9/2025
9.0.21 343 3/6/2025
9.0.20 19,628 3/6/2025
9.0.19 332 3/6/2025
Loading failed