49 lines
1.4 KiB
Swift
49 lines
1.4 KiB
Swift
import SwiftUI
|
|
|
|
struct MainContentRankChangeBadge: View {
|
|
let showRankChange: Bool
|
|
let rankChange: Int?
|
|
let isNew: Bool
|
|
|
|
var body: some View {
|
|
if showRankChange {
|
|
if isNew {
|
|
Image("ic_rank_new")
|
|
.resizable()
|
|
.scaledToFit()
|
|
.frame(width: 28, height: 12)
|
|
} else if let rankChange {
|
|
HStack(spacing: 2) {
|
|
switch rankChange {
|
|
case let value where value > 0:
|
|
rankChangeText(abs(value))
|
|
rankChangeIcon("ic_rank_caret_increase")
|
|
case let value where value < 0:
|
|
rankChangeText(abs(value))
|
|
rankChangeIcon("ic_rank_caret_decrease")
|
|
default:
|
|
rankChangeIcon("ic_rank_caret_stay")
|
|
}
|
|
}
|
|
.padding(.horizontal, 4)
|
|
.background(Color.gray900)
|
|
.cornerRadius(4)
|
|
}
|
|
}
|
|
}
|
|
|
|
private func rankChangeText(_ value: Int) -> some View {
|
|
Text("\(value)")
|
|
.appFont(.caption2)
|
|
.foregroundColor(Color.gray400)
|
|
.lineLimit(1)
|
|
}
|
|
|
|
private func rankChangeIcon(_ name: String) -> some View {
|
|
Image(name)
|
|
.resizable()
|
|
.scaledToFit()
|
|
.frame(width: 8, height: 8)
|
|
}
|
|
}
|