Phase 9 Wave 4: ARCHIVE nav + Cuts/Sessions/Mixes pages + MixWaveformVisualizer
Replaces flat RELEASES/SESSIONS/MIXES nav with ARCHIVE dropdown (PageRoute.Children,
one-level cap, dual-role node). Adds /archive overview, /cuts (AlbumsView + medium
filter; /albums redirects), /sessions + /sessions/{id} (hero-dominant), /mixes +
/mixes/{id} (MixWaveformVisualizer full-page background). Extracts ReleaseDetailScaffold
from TrackDetail (invariant trio). PersistentComponentState bridge on all new pages.
Click-to-seek seam designed on MixWaveformVisualizer (inert until wired).
This commit is contained in:
@@ -10,21 +10,33 @@
|
||||
<ul class="dd-nav-links">
|
||||
@foreach (var navPage in Pages.MenuPages)
|
||||
{
|
||||
<li>
|
||||
<a href="@navPage.Route" class="dd-nav-link">@navPage.Name</a>
|
||||
</li>
|
||||
@if (navPage.HasChildren)
|
||||
{
|
||||
@* Dual-role node: the parent anchor navigates to its own route on click,
|
||||
while hover/focus reveals the child dropdown (pure CSS, no JS). *@
|
||||
<li class="dd-nav-item-parent">
|
||||
<a href="@navPage.Route" class="dd-nav-link">@navPage.Name</a>
|
||||
<ul class="dd-nav-dropdown">
|
||||
@foreach (var child in navPage.Children)
|
||||
{
|
||||
<li>
|
||||
<a href="@child.Route" class="dd-nav-link dd-nav-dropdown-link">@child.Name</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</li>
|
||||
}
|
||||
else
|
||||
{
|
||||
<li>
|
||||
<a href="@navPage.Route" class="dd-nav-link">@navPage.Name</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
|
||||
<div class="dd-nav-actions">
|
||||
<StreamNowButton ButtonClass="dd-nav-cta" ButtonLabel="Stream Now ▶" />
|
||||
@* <button type="button" *@
|
||||
@* class="dd-nav-toggle" *@
|
||||
@* aria-label="Toggle dark mode" *@
|
||||
@* aria-pressed="@IsDarkMode.ToString().ToLowerInvariant()" *@
|
||||
@* @onclick="DarkModeToggle"> *@
|
||||
@* @((MarkupString)DarkLightModeIconSvg) *@
|
||||
@* </button> *@
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
@@ -35,13 +47,6 @@
|
||||
<a class="dd-nav-brand" href="/">Deep DRFT</a>
|
||||
|
||||
<div class="dd-nav-actions">
|
||||
@* <button type="button" *@
|
||||
@* class="dd-nav-toggle" *@
|
||||
@* aria-label="Toggle dark mode" *@
|
||||
@* aria-pressed="@IsDarkMode.ToString().ToLowerInvariant()" *@
|
||||
@* @onclick="DarkModeToggle"> *@
|
||||
@* @((MarkupString)DarkLightModeIconSvg) *@
|
||||
@* </button> *@
|
||||
<button type="button"
|
||||
class="dd-nav-hamburger"
|
||||
aria-label="Toggle navigation"
|
||||
@@ -59,6 +64,13 @@
|
||||
<li>
|
||||
<a href="@navPage.Route" class="dd-nav-link" @onclick="CloseMobileMenu">@navPage.Name</a>
|
||||
</li>
|
||||
@* One-level fan-out: render children as an indented sub-list under the parent link. *@
|
||||
@foreach (var child in navPage.Children)
|
||||
{
|
||||
<li class="dd-nav-mobile-child">
|
||||
<a href="@child.Route" class="dd-nav-link" @onclick="CloseMobileMenu">@child.Name</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
<li>
|
||||
<StreamNowButton ButtonClass="dd-nav-cta" ButtonLabel="Stream Now ▶" OnStreamStarted="CloseMobileMenu" />
|
||||
|
||||
Reference in New Issue
Block a user