@page "/mixes/{EntryKey}" @using DeepDrftPublic.Client.Controls @inherits ReleaseDetailBase @(ViewModel.Release?.Title ?? "Mix") - DeepDrft @if (ViewModel.IsLoading) {
} else if (ViewModel.NotFound || ViewModel.Release is null) {
Mix not found.
All mixes
} else { var release = ViewModel.Release; var hasGenre = release.Genre is not null; var hasDate = release.ReleaseDate is not null; @* Full-page waveform sits behind the scaffold content. The scaffold's container is positioned above it via the mix-detail-foreground stacking context. TrackId lets the visualizer couple to playback only when the player is on this mix's track. *@
@* Lava-lamp button top-right, across from the back link. Toggles a popover holding the four visualizer knobs (spec §7c/§7d). The controls themselves are unchanged — they mutate the shared MixVisualizerControlState; the backdrop bridge pushes the uniforms. The popover only progressively-discloses them off the always-visible row. *@ @* Outside-click close via MudOverlay (the SharePopover idiom). A knob drag never lands on this overlay — the knob's own global capture overlay is a child of the popover content above it — so dragging a knob does not dismiss the popover. *@
@if (!string.IsNullOrEmpty(release.ImagePath)) { } else { }
@if (hasGenre) {
@release.Genre
} @if (hasDate) {
Released @release.ReleaseDate!.Value.ToString("MMMM yyyy")
}
} @code { protected override string PersistKey => "mix-detail"; // Lava-lamp settings popover open state. Pure presentation over MixVisualizerControlState — the // popover discloses the four knobs; toggling it touches no control value or bridge push. private bool _settingsOpen; private void ToggleSettings() => _settingsOpen = !_settingsOpen; private void CloseSettings() => _settingsOpen = false; }