feat(theater): full-screen detail body, eased content collapse, playing-release scoping
Detail bodies fill 100vh below the nav so the visualizer reads full-screen; Theater toggle eases page content and the player-bar now-showing panel in/out instead of popping (reduced-motion honored); Theater only applies to the currently-playing release.
This commit is contained in:
@@ -10,13 +10,18 @@ else
|
||||
<MudContainer MaxWidth="MaxWidth.Large" Class="player-inner-container">
|
||||
<MudPaper Elevation="8" Class="player-surface pa-3">
|
||||
|
||||
@* Theater Mode "now showing" band (Phase 20 §5/§7). Shown only when Theater is ON and a
|
||||
release is playing — keyed off the playing track's Release, not off any detail page
|
||||
(the bar reaches into no page; §6). The release page is hidden in Theater Mode, so the
|
||||
bar carries its identity: cover, linked title, release share. *@
|
||||
@if (VisualizerControlState.TheaterMode && CurrentTrack?.Release is not null)
|
||||
@* Theater Mode "now showing" band (Phase 20 §5/§7, Wave 2 §2). Keyed off the playing
|
||||
track's Release, not off any detail page (the bar reaches into no page; §6). The release
|
||||
page is hidden in Theater Mode, so the bar carries its identity: cover, linked title,
|
||||
release share. The band stays mounted whenever a release is playing and eases in/out via
|
||||
the shared .dd-theater-collapsible wrapper — collapsed (zero height, faded) unless
|
||||
Theater is ON — so the bar grows/shrinks smoothly instead of popping. *@
|
||||
@if (CurrentTrack?.Release is not null)
|
||||
{
|
||||
<NowShowingPanel Release="CurrentTrack.Release" />
|
||||
var nowShowing = VisualizerControlState.TheaterMode;
|
||||
<div class="dd-theater-collapsible @(nowShowing ? null : "dd-theater-collapsed")">
|
||||
<NowShowingPanel Release="CurrentTrack.Release" />
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="player-layout">
|
||||
|
||||
@@ -10,11 +10,13 @@
|
||||
reaches into no page and no bar — single source, multiple observers (§6).
|
||||
|
||||
Visible only when the lava OR waveform subsystem is on — there is nothing to go to theater FOR if both
|
||||
are off (§3.2). Disabled until interactive (§3.4), the same prerender guard the lava/Play buttons use.
|
||||
Active visual state when Theater is ON. .dd-accent-icon gives the green-accent glyph in both themes
|
||||
with zero new CSS (§8) — same treatment as the lava-lamp trigger it sits beside. *@
|
||||
are off (§3.2) — AND when <see cref="Available"/> is true. The page supplies Available so the toggle
|
||||
only appears when this page's release is the one playing (Phase 20 Wave 2 §3): the toggle owns the
|
||||
subsystem gate; the page owns the release-playing predicate. Disabled until interactive (§3.4), the
|
||||
same prerender guard the lava/Play buttons use. Active visual state when Theater is ON. .dd-accent-icon
|
||||
gives the green-accent glyph in both themes with zero new CSS (§8) — same as the lava-lamp trigger. *@
|
||||
|
||||
@if (State.LavaEnabled || State.WaveformEnabled)
|
||||
@if (Available && (State.LavaEnabled || State.WaveformEnabled))
|
||||
{
|
||||
<div class="dd-accent-icon">
|
||||
<MudTooltip Text="@(State.TheaterMode ? "Exit theater mode" : "Theater mode")">
|
||||
@@ -33,6 +35,14 @@
|
||||
/// <summary>Trigger-icon size. Defaults Large to match the lava-lamp popover trigger it sits beside.</summary>
|
||||
[Parameter] public Size IconSize { get; set; } = Size.Large;
|
||||
|
||||
/// <summary>
|
||||
/// Whether the toggle is available on this surface (Phase 20 Wave 2 §3). The page passes the
|
||||
/// "this release is the one playing" predicate here; Theater Mode only applies to the playing
|
||||
/// release, so a detail page whose release is not playing passes <c>false</c> and shows no toggle.
|
||||
/// Defaults <c>true</c> so surfaces with no release-scoping (none today) keep the subsystem-only gate.
|
||||
/// </summary>
|
||||
[Parameter] public bool Available { get; set; } = true;
|
||||
|
||||
protected override void OnInitialized() => State.Changed += OnStateChanged;
|
||||
|
||||
// The toggle's own visibility and active state both key off State, which another observer (or this
|
||||
|
||||
Reference in New Issue
Block a user