feat(mix-visualizer): gate knob controls with Blazor @if in TopContent band; drop CSS collapse, glass, and TopRowCenter slot

This commit is contained in:
daniel-c-harvey
2026-06-16 20:31:42 -04:00
parent daafae8af6
commit fc7c9e978f
6 changed files with 39 additions and 117 deletions
+16 -14
View File
@@ -48,18 +48,20 @@ else
BackLabel="All mixes"
ShowMeta="@(hasGenre || hasDate)"
ShowShareRow="false">
<TopRowCenter>
@* In-flow seven-knob control container, between the back link and the lava-lamp toggle.
It grows in place (width/opacity transition) when expanded and collapses to zero
footprint when closed — never a popover, drawer, or floating overlay (§7b). The
container mutates the shared MixVisualizerControlState; the backdrop bridge pushes the
dials. A knob drag does not collapse it — the toggle flips only on the lamp's click. *@
<MixVisualizerControls Expanded="@_controlsExpanded" />
</TopRowCenter>
<TopContent>
@* 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)
{
<MixVisualizerControls />
}
</TopContent>
<TopRightAction>
@* Lava-lamp button top-right, across from the back link. Toggles the in-flow control
container in the center zone. The icon swaps to its FILLED variant while the
container is expanded (§7f / Part B). *@
@* 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). *@
<MudTooltip Text="Visualizer settings">
<MudIconButton Icon="@(_controlsExpanded ? DDIcons.LavaLampFilled : DDIcons.LavaLamp)"
Size="Size.Large"
@@ -116,9 +118,9 @@ else
@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.
// 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;