Files
yattee/Yattee/Views/Home/HomeHorizontalCards.swift

57 lines
1.8 KiB
Swift

//
// HomeHorizontalCards.swift
// Yattee
//
// Horizontal shelf of video cards for Home sections in grid layout mode.
//
import SwiftUI
/// A horizontally scrolling row of `VideoCardView` cards used by Home sections
/// when `HomeSectionLayout.grid` is selected.
struct HomeHorizontalCards: View {
let videos: [Video]
let queueSource: QueueSource
let sourceLabel: String
var loadMoreVideos: LoadMoreVideosCallback? = nil
#if os(tvOS)
private let cardWidth: CGFloat = 320
private let cardHeight: CGFloat = 340
private let spacing: CGFloat = 60
private let verticalPadding: CGFloat = 28
#else
private let cardWidth: CGFloat = 180
private let cardHeight: CGFloat = 210
private let spacing: CGFloat = 28
private let verticalPadding: CGFloat = 8
#endif
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
LazyHStack(alignment: .top, spacing: spacing) {
ForEach(Array(videos.enumerated()), id: \.element.id) { index, video in
VideoCardView(video: video, isCompact: true)
.frame(width: cardWidth, height: cardHeight, alignment: .top)
.tappableVideo(
video,
queueSource: queueSource,
sourceLabel: sourceLabel,
videoList: videos,
videoIndex: index,
loadMoreVideos: loadMoreVideos
)
}
}
.padding(.horizontal)
.padding(.vertical, verticalPadding)
#if os(tvOS)
.focusSection()
#endif
}
#if os(tvOS)
.scrollClipDisabled()
#endif
}
}