@using DeepDrftWeb.Client.Controls @using DeepDrftWeb.Client.Services
@if (_isDesktop) {
Deep DRFT
@foreach (PageRoute thePage in Pages.AllPages) { @thePage.Name }
} else {
Deep DRFT
@foreach (PageRoute route in Pages.AllPages) { @route.Name }
}
@code { [Inject] public required IBrowserViewportService BrowserViewportService { get; set; } [Inject] public required DarkModeCookieService DarkModeCookieService { get; set; } [Parameter] public int Elevation { get; set; } [Parameter] public required bool IsDarkMode { get; set; } [Parameter] public required EventCallback IsDarkModeChanged { get; set; } private bool _isDesktop = true; private Guid _viewportSubscriptionId; protected override async Task OnInitializedAsync() { IsDarkMode = DarkModeCookieService.GetDarkModeAsync(); await IsDarkModeChanged.InvokeAsync(IsDarkMode); } protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { var breakpoint = await BrowserViewportService.GetCurrentBreakpointAsync(); _isDesktop = breakpoint >= Breakpoint.Sm; _viewportSubscriptionId = Guid.NewGuid(); await BrowserViewportService.SubscribeAsync( _viewportSubscriptionId, args => { _isDesktop = args.Breakpoint >= Breakpoint.Sm; InvokeAsync(StateHasChanged); }, new ResizeOptions { NotifyOnBreakpointOnly = true }, fireImmediately: true); StateHasChanged(); } } private string DarkLightModeButtonIcon => IsDarkMode switch { true => DDIcons.GasLampLit, false => DDIcons.GasLamp, }; private async Task DarkModeToggle() { IsDarkMode = !IsDarkMode; await DarkModeCookieService.SetDarkModeAsync(IsDarkMode); await IsDarkModeChanged.InvokeAsync(IsDarkMode); } }