PublicKernBlazor.Components 1.0.0

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

PublicKernBlazor.Components

KERN-UX Design System als Blazor Component Library – typsichere, barrierefreie Komponenten für die deutsche Verwaltung (WCAG 2.1 AA).

CI NuGet KERN-UX Lizenz: EUPL-1.2


Inhalt


Was ist PublicKernBlazor.Components?

PublicKernBlazor.Components übersetzt das offizielle KERN-UX Design System in eine Razor Class Library. Entwicklerinnen und Entwickler können alle KERN-Komponenten direkt als Blazor-Komponenten verwenden – ohne KERN-CSS-Klassen manuell kennen zu müssen.

Kern-Vorteile:

  • ✅ Alle 48 KERN-UX-Komponenten als typsichere Blazor-Komponenten
  • ✅ KERN-CSS als statische Assets (_content/PublicKernBlazor.Components/css/) inklusive
  • ✅ WCAG 2.1 AA – ARIA-Attribute, semantisches HTML, Fokus-Management
  • ✅ Light- und Dark-Theme out-of-the-box
  • ✅ Kein JavaScript außer dem technisch unvermeidbaren Minimum
  • ✅ Vollständige XML-Dokumentation für IntelliSense

Voraussetzungen

Anforderung Version
.NET 10.0
Blazor Server oder WebAssembly 10.0

Installation

dotnet add package PublicKernBlazor.Components

DI-Registrierung (Program.cs)

using PublicKernBlazor.Components.Extensions;

builder.Services.AddKernUx();

AddKernUx() registriert:

  • ThemeService (Scoped) – Theme-Verwaltung (Light/Dark)
  • IdGeneratorService (Scoped) – eindeutige IDs für aria-describedby

Imports (_Imports.razor)

@using PublicKernBlazor.Components.Components.Content
@using PublicKernBlazor.Components.Components.Feedback
@using PublicKernBlazor.Components.Components.Forms
@using PublicKernBlazor.Components.Components.Layout
@using PublicKernBlazor.Components.Components.Navigation
@using PublicKernBlazor.Components.Components.Shared
@using PublicKernBlazor.Components.Components.Typography
@using PublicKernBlazor.Components.Enums
@using PublicKernBlazor.Components.Services

CSS-Assets einbinden

Option A – KernStyles-Komponente (empfohlen)

@* App.razor oder MainLayout.razor *@
<KernStyles />

Die Komponente rendert automatisch alle notwendigen <link>-Elemente.

Option B – manuell in App.razor


<link rel="stylesheet" href="_content/PublicKernBlazor.Components/css/themes/kern/index.css"/>

JS-Asset für Dialog


<script src="_content/PublicKernBlazor.Components/js/kern-dialog.js"></script>

Theming (Light / Dark)

Root-Layout mit KernThemeProvider

<KernThemeProvider Theme="KernTheme.Light">
    <Router AppAssembly="typeof(App).Assembly">
        <Found Context="routeData">
            <RouteView RouteData="routeData" />
        </Found>
    </Router>
</KernThemeProvider>

Theme programmatisch wechseln

@inject ThemeService ThemeService

<KernButton OnClick="ThemeService.Toggle">Theme wechseln</KernButton>

Das Theme wird über das Attribut data-kern-theme="light|dark" am Wrapper-Element gesteuert und im Cookie kern-theme persistiert.


Komponenten-Übersicht

Layout

Komponente Beschreibung Wichtigste Parameter
KernContainer Inhalts-Container mit optionalem Fluid-Modus Fluid
KernRow Grid-Zeile AlignItems, JustifyContent
KernCol Grid-Spalte Span, SpanSmSpanXxl, Offset
KernThemeProvider Theme-Root-Wrapper Theme

Typografie

Komponente Beschreibung Wichtigste Parameter
KernHeading Überschrift (Display–Small) Level, Element
KernTitle Seiten-/Abschnittstitel Size
KernBody Fließtext Bold, Muted, Size
KernLabel Formular-Label For, Optional
KernSubline Unterzeile Size
KernPreline Vortext Size

Shared

Komponente Beschreibung Wichtigste Parameter
KernIcon Symbolschrift-Icon Glyph, Size, AriaHidden, AriaLabel
KernDivider Horizontale Trennlinie AriaHidden
KernStyles CSS-Link-Einbindung
KernLink Anker-Link Href, Stretched, Target
KernList Listen (Bullet/Nummeriert) Variant, Size
Komponente Beschreibung Wichtigste Parameter
KernKopfzeile Bundesbehörden-Kopfzeile Label, Fluid

Formular-Elemente

Komponente Beschreibung Wichtigste Parameter
KernButton Aktions-Schaltfläche Variant, Icon, IconOnly, Block, Disabled
KernInputText Text-Eingabe Label, Value, Hint, Error, Optional
KernInputEmail E-Mail-Eingabe Label, Value, Autocomplete
KernInputPassword Passwort-Eingabe Label, Value
KernInputTel Telefon-Eingabe Label, Value, Autocomplete
KernInputUrl URL-Eingabe Label, Value
KernInputNumber Numerische Eingabe Label, Value
KernInputDate Datum (TT/MM/JJJJ) Label, Day, Month, Year
KernInputFile Datei-Upload Label, Accept, OnFileSelected
KernInputCurrency Währungsbetrag (DACH) Label, Value, CurrencySymbol, CultureName
KernTextarea Mehrzeiliger Text Label, Value, Rows
KernSelect Auswahlmenü Label, Value, Options
KernCheckbox Einzelne Checkbox Label, Checked
KernCheckboxList Checkbox-Gruppe Legend, Items, SelectedValues
KernRadioGroup Radio-Button-Gruppe Legend, Items, Value
KernFieldset Formular-Gruppe Legend, Hint, Error, Horizontal

Feedback & Status

Komponente Beschreibung Wichtigste Parameter
KernAlert Hinweis-/Fehlermeldung Type, Title
KernBadge Status-Kennzeichnung Variant
KernLoader Ladeindikator Visible, ScreenReaderText
KernProgress Fortschrittsanzeige Value, Max, Label

Content & Darstellung

Komponente Beschreibung Wichtigste Parameter
KernAccordion Auf-/Zuklappbarer Bereich Title, Open, OnToggle
KernAccordionGroup Accordion-Container
KernCard Inhalts-Karte Size, Active
KernCardMedia Karten-Bild
KernCardContainer Karten-Inhalt-Wrapper
KernDialog Modaler Dialog Title, Open, OnClose
KernTable Datentabelle Caption, Small, Striped, Responsive
KernDescriptionList Beschreibungsliste Column, Items
KernSummary Zusammenfassungs-Block Title, EditHref, Number
KernSummaryGroup Summary-Gruppen-Container
KernTaskList Aufgaben-/Schritt-Liste
KernTaskListItem Einzelner Aufgaben-Schritt Title, Number, Href, StatusContent
KernTaskListGroup Aufgaben-Gruppen-Container Title

Barrierefreiheit

PublicKernBlazor.Components implementiert WCAG 2.1 AA:

Anforderung Umsetzung
Semantisches HTML <button>, <fieldset>, <legend>, <dialog>, <caption>
ARIA-Attribute aria-describedby, aria-expanded, aria-hidden, aria-label, role="alert"
Eindeutige IDs IdGeneratorService generiert kollisionsfreie IDs pro Instanz
Fokus-Management KERN-Fokus-Styles werden nie unterdrückt
Tastatur-Navigation Alle interaktiven Elemente sind per Tastatur bedienbar
Kontrast KERN-Theme erfüllt WCAG 2.1 AA Kontrastanforderungen

Erweiterungen gegenüber KERN-UX

Folgende Komponenten sind Blazor-Library-Erweiterungen und nicht Teil des offiziellen KERN-UX-Standards:

Komponente Beschreibung
KernInputCurrency Währungseingabe optimiert für DACH (de-DE/de-CH), mit decimal?-Binding

Die zugehörigen SCSS-Erweiterungen liegen in Styles/extensions/ und werden bei KERN-UX-Updates nicht überschrieben. Siehe Styles/extensions/README.md.


Projektstruktur

PublicKernBlazor.Components/                              ← Repository-Root
├── src/
│   ├── PublicKernBlazor.Components/                      ← Razor Class Library (NuGet-Paket)
│   │   ├── Components/
│   │   │   ├── Content/                    # Accordion, Card, Dialog, Table, Summary, TaskList
│   │   │   ├── Feedback/                   # Alert, Badge, Loader, Progress
│   │   │   ├── Forms/                      # Button, alle Input-Typen, Select, Checkbox, Radio, Fieldset
│   │   │   ├── Layout/                     # Container, Row, Col, ThemeProvider
│   │   │   ├── Navigation/                 # Kopfzeile, Link, List
│   │   │   ├── Shared/                     # Icon, Divider, KernStyles
│   │   │   └── Typography/                 # Heading, Title, Body, Label, Subline, Preline
│   │   ├── Enums/                          # Typsichere Enums für alle Parameter
│   │   ├── Extensions/                     # AddKernUx() DI-Erweiterung
│   │   ├── Services/                       # ThemeService, IdGeneratorService
│   │   ├── Styles/
│   │   │   ├── core/                       # KERN-UX SCSS (nicht bearbeiten – wird bei Updates überschrieben)
│   │   │   ├── extensions/                 # Projekt-spezifische SCSS-Ergänzungen (update-sicher)
│   │   │   └── themes/kern/                # KERN-Theme Entry Point
│   │   ├── Utilities/                      # CssBuilder, EnumCssExtensions
│   │   └── wwwroot/
│   │       ├── css/                        # Kompilierte CSS-Dateien
│   │       └── js/                         # kern-dialog.js
│   └── PublicKernBlazor.Demo/                 ← Interaktive Showcase-App
├── tests/
│   ├── PublicKernBlazor.Components.Tests/                ← bUnit-Unit-Tests (Rendering, Interaktion, Accessibility)
│   └── PublicKernBlazor.Demo.SmokeTests/      ← Playwright-Smoke-Tests
├── docs/
│   ├── contributing/                       # Entwickler-Dokumentation
│   └── internal/                           # Interne Planungsdokumente
├── scripts/                                # PowerShell-Hilfsskripte
└── .github/
    ├── workflows/                          # CI- und Release-Workflows
    ├── ISSUE_TEMPLATE/                     # Strukturierte Issue-Formulare
    └── PULL_REQUEST_TEMPLATE.md

Entwicklung & Tests

Tests ausführen

dotnet test tests/PublicKernBlazor.Components.Tests/PublicKernBlazor.Components.Tests.csproj

Das Testprojekt enthält:

  • Rendering-Tests – alle Komponenten werden auf korrekte HTML-Ausgabe geprüft
  • Interaktions-Tests – EventCallbacks, State-Änderungen
  • Accessibility-Audit-Tests – ARIA-Attribute, semantisches HTML

NuGet-Paket erstellen

dotnet pack src/PublicKernBlazor.Components/PublicKernBlazor.Components.csproj --configuration Release

SCSS-Kompilierung

SCSS wird beim Build automatisch via AspNetCore.SassCompiler nach wwwroot/css/ kompiliert.

Eigene SCSS-Erweiterungen

Neue Stile gehören nach Styles/extensions/components/ und müssen in Styles/extensions/index.scss per @use registriert werden. Niemals Styles/core/ direkt bearbeiten.

Ausführliche Anleitung: docs/contributing/development-setup.md


Beitragen

Contributions sind willkommen! Bitte lies zuerst CONTRIBUTING.md.


Changelog

Alle Änderungen sind in CHANGELOG.md dokumentiert.


Lizenz

MIT – siehe LICENSE.


KERN-UX ist ein offener UX-Standard für die deutsche Verwaltung. Mehr Infos: kern-ux.de | GitLab

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
1.0.0 84 3/15/2026