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() .frame(width: 28, height: 18) } 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) .padding(.vertical, 3) .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: 14, height: 14) } }