feat(cms): add Track Browser foundation with mode toggle and CmsTrackGrid

- Extend ICmsTrackService.GetPagedAsync with album/genre filter params
- Add CmsTrackBrowserViewModel (DI-scoped) with lazy album/genre load
- Extract CmsTrackGrid: 9-column layout, waveform status, per-row generate,
  info tooltip, album/genre filter params, OnStatusLoaded callback
- Restructure TrackList: remove MudTabs, add three @page routes, mode toggle,
  Generate All Missing button; album/genre stubs for next wave
This commit is contained in:
daniel-c-harvey
2026-06-11 16:17:45 -04:00
parent a29b961c27
commit 508a522a8d
7 changed files with 466 additions and 291 deletions
+4 -1
View File
@@ -41,10 +41,13 @@ public interface ICmsTrackService
Task<Result> DeleteTrackAsync(long id, CancellationToken ct = default);
/// <summary>
/// Fetch a page of track metadata from the Content API's <c>GET api/track/page</c>.
/// Fetch a page of track metadata from the Content API's <c>GET api/track/page</c>. Optional
/// <paramref name="album"/> and <paramref name="genre"/> filters narrow the result to a single
/// release title or genre; null leaves the dimension unfiltered.
/// </summary>
Task<ResultContainer<PagedResult<TrackDto>>> GetPagedAsync(
int page, int pageSize, string? sortColumn, bool sortDescending,
string? album = null, string? genre = null,
CancellationToken ct = default);
/// <summary>