import SwiftUI struct Exercise: Identifiable { let id = UUID(); let name: String; let sets: String; let icon: String; var done = false } struct WorkoutView: View { @State private var exercises: [Exercise] = [ .init(name: "Barbell squat", sets: "4 × 8", icon: "figure.strengthtraining.traditional"), .init(name: "Bench press", sets: "4 × 10", icon: "dumbbell.fill"), .init(name: "Deadlift", sets: "3 × 6", icon: "figure.strengthtraining.functional"), .init(name: "Pull-ups", sets: "3 × 12", icon: "figure.climbing"), .init(name: "Plank", sets: "3 × 60s", icon: "figure.core.training") ] private var done: Int { exercises.filter(\.done).count } var body: some View { ZStack { Color(red: 0.05, green: 0.03, blue: 0.04).ignoresSafeArea() ScrollView { VStack(alignment: .leading, spacing: 16) { Text("PUSH DAY · 48 MIN").font(.caption).bold().foregroundColor(Color(red: 0.96, green: 0.25, blue: 0.37)) Text("Strength A").font(.system(size: 34, weight: .heavy)).foregroundColor(.white) HStack { stat("\(done)/\(exercises.count)", "exercises") stat("1,240", "kg lifted") stat("320", "kcal") } .padding(18).background(Color(red: 0.10, green: 0.05, blue: 0.07)).cornerRadius(18) ForEach($exercises) { $ex in Button { ex.done.toggle() } label: { HStack(spacing: 14) { Image(systemName: ex.icon).font(.title2).foregroundColor(.white).frame(width: 30) VStack(alignment: .leading, spacing: 3) { Text(ex.name).fontWeight(.semibold).foregroundColor(.white) Text(ex.sets).font(.footnote).foregroundColor(.gray) } Spacer() Image(systemName: ex.done ? "checkmark.circle.fill" : "circle") .foregroundColor(ex.done ? Color(red: 0.96, green: 0.25, blue: 0.37) : .gray).font(.title2) } .padding(16).background(Color.white.opacity(0.04)).cornerRadius(16) } } } .padding(22) } } } private func stat(_ value: String, _ label: String) -> some View { VStack(spacing: 3) { Text(value).font(.title3).bold().foregroundColor(.white) Text(label).font(.caption).foregroundColor(.gray) }.frame(maxWidth: .infinity) } } #Preview { WorkoutView() }