// // NewProjectForm.swift // OnCue // // Created by Pradyun Setti on 22/06/2024. // import SwiftUI struct NewProjectForm: View { @State private var newProjectName = "" @State private var chosenColor = Color.clear @Environment(\.dismiss) var dismiss let completionHandler: (String, String) -> Void let availColours: [String] = { var c = Constants.colors.map { $0.toHex()! } c.insert("Theme", at: 0) return c }() var body: some View { NavigationView { Form { TextField("Project Name", text: $newProjectName) Section { HStack { ForEach(Constants.colors, id: \.self) { color in if chosenColor == color { ZStack { Circle() .foregroundStyle(color) Image(systemName: "checkmark") } .onTapGesture { chooseColour(color) } } else { Circle() .foregroundStyle(color) .onTapGesture { chooseColour(color) } } } } } header: { Text("Project Colour") } footer: { Text("Leave unselected to use theme colour in settings" )} } .navigationTitle("Add New Project") .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .topBarLeading) { Button("Cancel", role: .cancel) { dismiss() } .foregroundStyle(.red) } ToolbarItem(placement: .topBarTrailing) { Button("Done") { completionHandler(newProjectName, chosenColor.toHex() ?? "FF0000") dismiss() } } } } } private func chooseColour(_ color: Color) { if color == chosenColor { chosenColor = .clear } else { chosenColor = color } } } #Preview { NewProjectForm { name, color in } }