Files
sodalive-ios/SodaLive/Sources/V2/Main/Content/Ranking/Components/MainContentRankChangeBadge.swift
2026-07-06 20:19:27 +09:00

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)
}
}