import SwiftUI import ProxyCore struct HeaderEditorSheet: View { @State var headers: [(key: String, value: String)] let onSave: ([(key: String, value: String)]) -> Void @Environment(\.dismiss) private var dismiss var body: some View { NavigationStack { List { ForEach(headers.indices, id: \.self) { index in HStack(spacing: 8) { TextField("Header", text: Binding( get: { headers[index].key }, set: { headers[index].key = $0 } )) .textInputAutocapitalization(.never) .autocorrectionDisabled() .font(.subheadline) TextField("Value", text: Binding( get: { headers[index].value }, set: { headers[index].value = $0 } )) .textInputAutocapitalization(.never) .autocorrectionDisabled() .font(.subheadline) } } .onDelete { indexSet in headers.remove(atOffsets: indexSet) } Menu { ForEach(ProxyConstants.commonHeaders, id: \.self) { header in Button(header) { headers.append((key: header, value: "")) } } Divider() Button("Custom Header") { headers.append((key: "", value: "")) } } label: { Label("Add Header", systemImage: "plus.circle.fill") } } .navigationTitle("Edit Headers") .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .topBarLeading) { Button("Cancel") { dismiss() } } ToolbarItem(placement: .topBarTrailing) { Button("Done") { let filtered = headers.filter { !$0.key.isEmpty } onSave(filtered) dismiss() } .fontWeight(.semibold) } } } } }