jel/Jel/Views/Library/Item/ItemHeaderView.swift

57 lines
1.6 KiB
Swift

//
// ItemHeaderView.swift
// Jel
//
// Created by zerocool on 12/23/23.
//
import SwiftUI
import JellyfinKit
struct ItemHeaderView: View {
@State var item: BaseItemDto
let overlayGradient = LinearGradient(gradient: Gradient(stops: [
.init(color: .clear, location: 0),
.init(color: .black, location: 0.5),
// .init(color: .black, location: 0.7),
// .init(color: .clear, location: 1)
]), startPoint: .bottom, endPoint: .top)
var body: some View {
ZStack(alignment: .bottom) {
StickyHeaderView(minHeight: 300) {
ItemIconView(item: item, imageType: "Backdrop", contentMode: .fill)
.setCornerRadius(0)
.mask(overlayGradient)
.background {
ItemIconView(item: item, imageType: "Backdrop", contentMode: .fill)
.setCornerRadius(0)
.blur(radius: 50)
}
}
HStack {
ItemIconView(item: item, imageType: "Logo", width: 200, height: 100, placeHolder: AnyView(Text(item.name ?? "Unknown").font(.title).bold().truncationMode(.middle)))
.setCornerRadius(0)
.shadow(radius: 10)
.frame(alignment: .leading)
Spacer()
ItemInfoView(item: item)
.foregroundStyle(.white)
}
.padding([.leading, .trailing])
}
.scrollTransition {content, phase in
content
.scaleEffect(phase.isIdentity ? 1 : 2)
.opacity(phase.isIdentity ? 1 : 0.1)
.blur(radius: phase.isIdentity ? 0 : 50)
}
}
}
// #Preview {
// ItemHeaderView(item: BaseItemDto())
// }