import SwiftUI struct QueueView: View { @State private var expanded = false @ObservedObject private var player = PlayerModel.shared var body: some View { LazyVStack { if !items.isEmpty { Button { withAnimation { expanded.toggle() } } label: { HStack(spacing: 12) { sectionLabel(label) Spacer() ClearQueueButton() if items.count > 1 { Label("Show more", systemImage: expanded ? "chevron.up" : "chevron.down") .animation(nil, value: expanded) .foregroundColor(.accentColor) .imageScale(.large) .labelStyle(.iconOnly) } } } .buttonStyle(.plain) ListView(items: items, limit: limit) .environment(\.inQueueListing, true) } } .padding(.vertical, items.isEmpty ? 0 : 15) } var label: String { if items.count < 2 { return "Next in Queue".localized() } return "Next in Queue".localized() + " (\(items.count))" } var items: [ContentItem] { player.queue.map(\.contentItem) } var limit: Int? { if !expanded { return 1 } return nil } func sectionLabel(_ label: String) -> some View { Text(label.localized()) .font(.title3.bold()) .frame(maxWidth: .infinity, alignment: .leading) .foregroundColor(.secondary) } } struct QueueView_Previews: PreviewProvider { static var previews: some View { QueueView() } }