Files
TekH 72a2a23f0a Replace Home with Samples in menu; add ReceiverLayout
- Update NavMenu to show "Samples" instead of "Home"
- Add ReceiverLayout.razor for receiver-facing pages:
  - Includes main content, sticky footer, and privacy link
  - Implements cookie consent banner using localStorage
  - Adds language switcher with LocalizationService integration
  - Handles event disposal and JS interop for SSR/client scenarios
2026-05-13 22:45:03 +02:00

35 lines
1.5 KiB
Plaintext

@inject NavigationManager NavigationManager
@implements IDisposable
<div>
<DxMenu Orientation="@Orientation.Vertical" CssClass="menu">
<Items>
<DxMenuItem NavigateUrl="/samples" Text="Samples" CssClass="@MenuItemCssClass("/samples")" IconCssClass="icon icon-home"></DxMenuItem>
<DxMenuItem NavigateUrl="/counter" Text="Counter" CssClass="@MenuItemCssClass("/counter")" IconCssClass="icon icon-counter"></DxMenuItem>
<DxMenuItem NavigateUrl="/weather" Text="Weather" CssClass="@MenuItemCssClass("/weather")" IconCssClass="icon icon-weather"></DxMenuItem>
<DxMenuItem NavigateUrl="/pdfviewer" Text="PDF Viewer" CssClass="@MenuItemCssClass("/pdfviewer")" IconCssClass="icon icon-pdf-viewer"></DxMenuItem>
</Items>
</DxMenu>
</div>
@code {
private string? currentLocalPath;
protected override void OnInitialized() {
currentLocalPath = new Uri(NavigationManager.Uri).LocalPath;
NavigationManager.LocationChanged += OnLocationChanged;
}
private void OnLocationChanged(object? sender, LocationChangedEventArgs e) {
currentLocalPath = new Uri(NavigationManager.Uri).LocalPath;
InvokeAsync(StateHasChanged);
}
private string? MenuItemCssClass(string itemPath) {
return string.Equals(currentLocalPath, itemPath, StringComparison.OrdinalIgnoreCase) ? "menu-item-active" : null;
}
public void Dispose() {
NavigationManager.LocationChanged -= OnLocationChanged;
}
}