feat(home): 순위 변화 배지를 추가한다

This commit is contained in:
Yu Sung
2026-06-30 15:30:39 +09:00
parent c4e83c3aef
commit 6e3a7b21f7
3 changed files with 122 additions and 33 deletions

View File

@@ -0,0 +1,64 @@
import SwiftUI
struct MainHomeRankChangeBadge: 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)
}
}
struct MainHomeRankChangeBadge_Previews: PreviewProvider {
static var previews: some View {
VStack(alignment: .leading, spacing: SodaSpacing.s12) {
MainHomeRankChangeBadge(showRankChange: true, rankChange: 5, isNew: false)
MainHomeRankChangeBadge(showRankChange: true, rankChange: -3, isNew: false)
MainHomeRankChangeBadge(showRankChange: true, rankChange: 0, isNew: false)
MainHomeRankChangeBadge(showRankChange: true, rankChange: nil, isNew: true)
MainHomeRankChangeBadge(showRankChange: false, rankChange: 5, isNew: false)
MainHomeRankChangeBadge(showRankChange: true, rankChange: nil, isNew: false)
}
.padding(SodaSpacing.s20)
.background(Color.black)
.previewLayout(.sizeThatFits)
}
}