ClassicSidebar Layout

SmartLink

Ein echtes <a href>-Tag das optional wie ein Button aussieht – mit automatischer Active-Klasse, Enhanced Navigation Control und vollem Browser-Verhalten (Mittelklick, Ctrl+Klick, Rechtsklick).

Active-Match Varianten bei SmartLink

Zeigt welche Strategie wann greift. Navigiere zu verschiedenen URLs um den Effekt zu sehen.

Als reiner Link – Text, Icon, Text + Icon

Kein AsButton. Icon und Text sollen vertikal zentriert sein.

Reiner Link – verschiedene Icons

Prüfe ob Icon-Baseline mit Textbaseline übereinstimmt.

Reiner Link – NoColor (Farbe erben)

NoColor="true" erbt die Farbe vom Elternelement – nützlich in farbigen Containern.

AsButton – Semantikfarben

Der Link rendert ein echtes <a href> – verhält sich im Browser wie ein Link, sieht aus wie ein Button.

Größen & Radius (AsButton)

Standard-Größe ist OoSize.Xs (wie Button). Ohne Size-Parameter wird XS verwendet.

Shadow (gedrückter Zustand)

ForceLoad – echter Browser-Reload

ForceLoad="true" setzt onclick="window.location.assign(this.href)" und umgeht damit Blazors SignalR-Interception. Linksklick = echter Reload. Mittelklick / Ctrl+Click = neues Tab (onclick wird dabei nicht gefeuert).
Seite initialisiert um: 10:45:25.083 (ändert sich nur bei ForceLoad=true)

Icon + Text – Zentrierung in allen Größen

Icon links vom Text. Prüfe ob Icon und Text in jeder Größe vertikal zentriert sind.

Nur Icon (kein Text) – alle Größen

Quadratische Icon-Buttons. Prüfe ob das Icon in jeder Größe mittig sitzt.

Icon + Text – Solid / Outline / Ghost

Gleiches Icon in allen drei Varianten, Größe XS und MD zum Vergleich.

Icon rechts (via ChildContent)

Der Icon-Parameter setzt das Icon immer links. Für Icon rechts ChildContent verwenden.

Vergleich: Plain <a> vs. NavLink vs. SmartLink

Alle drei Links zeigen auf /demo/smartlink (aktuelle Seite) – nur SmartLink und NavLink setzen die Active-Klasse automatisch.
Plain <a>
Kein Active, kein Enhanced Nav
NavLink (Blazor) (Inactive)
Setzt „active"-Klasse nicht, kein href-Fallback für Rechtsklick-Ziel
NavLink (Blazor) (Active)
Setzt „active"-Klasse, kein href-Fallback für Rechtsklick-Ziel
SKILL.md – Smartlink
---
name: SmartLink
description: Onesown Blazor Komponente SmartLink (Common). Verwende diesen Skill wenn du die SmartLink-Komponente verwenden, konfigurieren oder debuggen moechtest.
---

# SmartLink

**Namespace:** `Onesown.Blazor.Components`  
**Kategorie:** Common  
**Basisklasse:** `IDisposable`  

Intelligenter Link mit automatischer Active-CSS-Klasse, optionalem Button-Styling, ForceLoad-Unterstützung und konfigurierbarer Active-Matching-Strategie (Prefix, Exact, Regex).

**Live-Demo:** https://components.schini.com/demo/smartlink  

## Parameter

| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
| ``Text`` | ``string`` |  | Text-Label des Links. |
| ``Icon`` | ``string`` |  | Material Symbols Icon-Name (z.B. "open_in_new", "arrow_forward"). |
| ``Title`` | ``string`` |  | HTML Title-Attribut für Tooltip on Hover. |
| ``ChildContent`` | ``RenderFragment`` |  | Child-Content (z.B. für Custom-Markup). |
| ``AsButton`` | ``bool`` | ``false`` | Rendert den Link mit Button-Styling (oo-btn). |
| ``ButtonStyle`` | ``OoButtonStyle`` |  | Farbpalette / Variante – nur relevant wenn AsButton="true". |
| ``Radius`` | ``string`` |  | Border-Radius – Preset via OoRadius oder Custom-CSS-Wert. Standard: OoRadius.Sm. |
| ``Shadow`` | ``bool?`` |  | Zeigt einen Inset-Box-Shadow (gedrückter Zustand) – nur relevant wenn AsButton="true". |
| ``NoColor`` | ``bool`` | ``false`` | Unterdrückt die primäre Link-Farbe – der Link erbt die Farbe vom Elternelement. |
| ``Enhance`` | ``bool`` | ``true`` | false = data-enhance-nav="false" wird gesetzt (erzwingt Full Reload bei Static SSR). |
| ``ForceLoad`` | ``bool`` | ``false`` | true = Linksklick löst immer einen echten Browser-Reload aus (window.location.assign). Funktioniert auch im Interactive Server Modus. Mittelklick und Ctrl+Click öffnen weiterhin einen neuen Tab. |
| ``UseActive`` | ``bool`` | ``true`` | Ob die Active-Klasse gesetzt werden soll. |
| ``ActiveClass`` | ``string`` | ``"active"`` | CSS-Klasse die gesetzt wird wenn der Link aktiv ist. |
| ``ActiveMatch`` | ``SmartLinkActiveMatch`` | ``SmartLinkActiveMatch.SegmentPrefix`` | Matching-Strategie für die Active-Klasse. |
| ``ActivePattern`` | ``string`` |  | Regex-Pattern – nur verwendet wenn ActiveMatch = Regex. Beispiel: "^kunden(/&#124;$)" |
| ``IgnoreQueryString`` | ``bool`` | ``false`` | Query-String bei Active-Prüfung ignorieren. |
| ``IgnoreFragment`` | ``bool`` | ``true`` | Fragment (#anker) bei Active-Prüfung ignorieren. |

## Hinweise

- Einfacher Link: Href="/kunden" Text="Kundenliste"
- Als Button: AsButton="true" ButtonStyle="OoColorPalette.Primary"
- Icon-Link: Icon="open_in_new" Text="Extern" für Links mit Material-Symbol
- ForceLoad: ForceLoad="true" erzwingt echten Browser-Reload auch im Interactive Server Modus
- Active-Klasse: UseActive="false" deaktiviert, ActiveMatch="SmartLinkActiveMatch.Exact" für exaktes Matching
- Regex-Matching: ActiveMatch="SmartLinkActiveMatch.Regex" + ActivePattern="^kunden(/|$)"
- NoColor="true" unterdrückt die primäre Link-Farbe (erbt Farbe vom Elternelement)
- ChildContent statt Text/Icon für beliebiges Markup innerhalb des Links


Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.