// // CheersReportDialogView.swift // SodaLive // // Created by klaus on 2023/08/11. // import SwiftUI struct CheersReportDialogView: View { @Binding var isShowing: Bool let confirmAction: (String) -> Void @State private var selectedIndex: Int? = nil let reasons = [ "원치 않는 상업성 콘텐츠 또는 스팸", "아동 학대", "증오심 표현 또는 노골적인 폭력", "테러 조장", "희롱 또는 괴롭힘", "자살 또는 자해", "잘못된 정보" ] var body: some View { ZStack { Color.black .opacity(0.7) .ignoresSafeArea() .onTapGesture { isShowing = false } VStack(spacing: 13.3) { Text("응원글 신고") .font(.custom(Font.medium.rawValue, size: 16.7)) .foregroundColor(Color(hex: "eeeeee")) VStack(spacing: 13.3) { ForEach(0..<reasons.count, id: \.self) { index in let reason = reasons[index] HStack(spacing: 8) { Image(selectedIndex == index ? "btn_radio_select_selected" : "btn_radio_select_normal") .resizable() .frame(width: 20, height: 20) Text(reason) .font(.custom(Font.medium.rawValue, size: 14)) .foregroundColor(Color(hex: "909090")) Spacer() } .onTapGesture { selectedIndex = index } } } .padding(.vertical, 3.3) HStack(spacing: 26.7) { Spacer() Text("취소") .font(.custom(Font.medium.rawValue, size: 13.3)) .foregroundColor(Color(hex: "9970ff")) .onTapGesture { isShowing = false } Text("신고") .font(.custom(Font.medium.rawValue, size: 13.3)) .foregroundColor(Color(hex: "9970ff")) .onTapGesture { if let selectedIndex = selectedIndex { isShowing = false confirmAction(reasons[selectedIndex]) } } } .padding(.top, 13.3) } .padding(24) .frame(width: screenSize().width - 33.3) .background(Color(hex: "222222")) .cornerRadius(13.3) } } } struct CheersReportDialogView_Previews: PreviewProvider { static var previews: some View { CheersReportDialogView( isShowing: .constant(false), confirmAction: { _ in } ) } }