@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 the INLINE seven-knob control bar that animates open/closed in place below it (lava reframe §7b) — not a popover or drawer. The icon swaps to its FILLED variant while the bar is expanded (§7f / Part B). The controls bar mutates the shared MixVisualizerControlState; the backdrop bridge pushes the dials. A knob drag does not collapse the bar — the toggle only flips on this button's click, never on a drag landing in the bar. *@
@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 inline knob-bar expanded state. Pure presentation over MixVisualizerControlState — the // bar discloses the seven knobs and animates open/closed; toggling it touches no control value or // bridge push. The lava-lamp button's filled/outline glyph is driven off this same flag. private bool _controlsExpanded; private void ToggleSettings() => _controlsExpanded = !_controlsExpanded; }