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
KeinAsButton. 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.
AsButton – Outline & Ghost
Mit Icon
Größen & Radius (AsButton)
Standard-Größe istOoSize.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
Kein Active, kein Enhanced Nav
NavLink (Blazor) (Inactive)
Setzt „active"-Klasse nicht, kein href-Fallback für Rechtsklick-Ziel
Setzt „active"-Klasse nicht, kein href-Fallback für Rechtsklick-Ziel
NavLink (Blazor) (Active)
Setzt „active"-Klasse, kein href-Fallback für Rechtsklick-Ziel
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(/|$)" | | ``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