NewsBlur/clients/ios/Classes/TrainerCapsule.swift
David Sinclair 51684a7812 #1247 (Mac Catalyst edition)
- Rewrote the trainer view using SwiftUI, to be native instead of a web view.
- Added a Feed class and other data enhancements to support this.
2024-04-04 20:06:11 -05:00

67 lines
1.6 KiB
Swift

//
// TrainerCapsule.swift
// NewsBlur
//
// Created by David Sinclair on 2024-04-02.
// Copyright © 2024 NewsBlur. All rights reserved.
//
import SwiftUI
struct TrainerCapsule: View {
var score: Feed.Score
var header: String
var image: UIImage?
var value: String
var count: Int = 0
var body: some View {
HStack {
HStack {
Image(systemName: score.imageName)
.foregroundColor(.white)
content
}
.padding([.top, .bottom], 5)
.padding([.leading, .trailing], 10)
.background(score == .like ? Color(red: 0, green: 0.5, blue: 0.0) : score == .dislike ? Color.red : Color(white: ThemeManager.shared.isSystemDark ? 0.35 : 0.6))
.clipShape(Capsule())
if count > 0 {
Text("x \(count)")
.colored(.gray)
.padding([.trailing], 10)
}
}
}
var content: Text {
Text("\(Text("\(header):").colored(.init(white: 0.85))) \(imageText)\(value)")
.colored(.white)
}
var imageText: Text {
if let image {
Text(Image(uiImage: image)).baselineOffset(-3) + Text(" ")
} else {
Text("")
}
}
}
#Preview {
TrainerCapsule(score: .none, header: "Tag", value: "None Example")
}
#Preview {
TrainerCapsule(score: .like, header: "Tag", value: "Liked Example")
}
#Preview {
TrainerCapsule(score: .dislike, header: "Tag", value: "Disliked Example")
}