@namespace DeepDrftPublic.Client.Controls @using DeepDrftModels.DTOs @using DeepDrftPublic.Client.Services @* Append-only "Add to Queue" affordance placed beside a play control. Add is NOT play: it calls the cascaded IQueueService's Enqueue/EnqueueRange (which append to the END without disturbing current playback; a first add into a dormant queue seeds the head from the externally-playing track when one exists, then appends) — never PlayRelease/PlayTrack/Start/Select. Track mode (Track set) appends a single track; release mode (ReleaseTracks set) appends the whole ordered list. Reads queue state from the layout-level cascade (C1); owns no data fetch. *@ @code { [CascadingParameter] public IQueueService? Queue { get; set; } /// Single track to append (track mode). Mutually exclusive with . [Parameter] public TrackDto? Track { get; set; } /// Ordered release tracks to append (release mode). Mutually exclusive with . [Parameter] public IReadOnlyList? ReleaseTracks { get; set; } [Parameter] public Size Size { get; set; } = Size.Medium; [Parameter] public Color Color { get; set; } = Color.Secondary; private string Tooltip => ReleaseTracks is not null ? "Add release to queue" : "Add to queue"; private void AddToQueue() { if (Queue is null) return; if (ReleaseTracks is not null) { Queue.EnqueueRange(ReleaseTracks); } else if (Track is not null) { Queue.Enqueue(Track); } } }