fix(mix-visualizer): move seven-knob controls in-flow between back link and lava lamp (Phase 10 reframe §7b)

This commit is contained in:
daniel-c-harvey
2026-06-16 20:12:02 -04:00
parent b7a60f24c5
commit 841822d8fe
6 changed files with 80 additions and 62 deletions
+20 -19
View File
@@ -48,26 +48,27 @@ 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>
<TopRightAction>
@* 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. *@
<div class="mix-visualizer-controls-anchor">
<MudTooltip Text="Visualizer settings">
<MudIconButton Icon="@(_controlsExpanded ? DDIcons.LavaLampFilled : DDIcons.LavaLamp)"
Size="Size.Large"
Color="Color.Secondary"
Disabled="@(!RendererInfo.IsInteractive)"
OnClick="@ToggleSettings"
aria-label="Visualizer settings"
aria-expanded="@_controlsExpanded" />
</MudTooltip>
<MixVisualizerControls Expanded="@_controlsExpanded" />
</div>
@* 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). *@
<MudTooltip Text="Visualizer settings">
<MudIconButton Icon="@(_controlsExpanded ? DDIcons.LavaLampFilled : DDIcons.LavaLamp)"
Size="Size.Large"
Color="Color.Secondary"
Disabled="@(!RendererInfo.IsInteractive)"
OnClick="@ToggleSettings"
aria-label="Visualizer settings"
aria-expanded="@_controlsExpanded" />
</MudTooltip>
</TopRightAction>
<Hero>
<div class="mix-detail-cover">
@@ -4,28 +4,6 @@
z-index: 1;
}
/* The lava-lamp toggle + its inline knob-bar. The anchor stacks the button over the bar and lets the
bar grow downward/leftward in place when expanded, without shoving the masthead. The bar itself is
absolutely positioned under the button (top-right of the detail body), so its open/close animation
reads as the controls growing out from the icon rather than reflowing the page (lava reframe §7b). */
.mix-visualizer-controls-anchor {
position: relative;
display: flex;
flex-direction: column;
align-items: flex-end;
}
/* MixVisualizerControls renders the .mix-visualizer-controls-bar as its single root. It is a child
Razor component, so its scope attribute is not stamped here — reach the bar with ::deep to position
it as a floating-but-inline element anchored to the toggle's bottom-right. */
.mix-visualizer-controls-anchor ::deep .mix-visualizer-controls-bar {
position: absolute;
top: calc(100% + 0.5rem);
right: 0;
z-index: 3;
transform-origin: top right;
}
/* Medium square cover — deliberately smaller than the 360px cut cover so the
waveform backdrop keeps room. The placeholder/art MudPaper fills this frame. */
.mix-detail-cover {