@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. *@
@* The seven-knob band lives in its own full-width area below the back/lamp top row. Blazor — not CSS — controls its visibility: it is rendered only while the lava-lamp is on, so when off it is not in the DOM at all. No background, no animation, no reflow of the row above. The band mutates the shared MixVisualizerControlState; the backdrop bridge pushes the dials. A knob drag does not toggle it — the lamp's click does. *@ @if (_controlsExpanded) { } @* Lava-lamp button top-right, across from the back link. Toggles the knob band below the row. The icon swaps to its FILLED variant while the band is shown (§7f / Part B). *@
@if (!string.IsNullOrEmpty(release.ImagePath)) { } else { }
@if (hasGenre) {
@release.Genre
} @if (hasDate) {
Released @release.ReleaseDate!.Value.ToString("MMMM yyyy")
}
@* Release-mode share: copies the canonical /mixes/{entryKey} URL, not a single track (§3b). *@
} @code { protected override string PersistKey => "mix-detail"; // Lava-lamp knob-band visibility. Pure presentation over MixVisualizerControlState — gates whether // the seven-knob MixVisualizerControls is rendered into the TopContent band; toggling it touches no // control value or bridge push. The lava-lamp button's filled/outline glyph is driven off this flag. private bool _controlsExpanded; private void ToggleSettings() => _controlsExpanded = !_controlsExpanded; }