import SwiftUI import SFSafeSymbols struct TextEntryField: View { let name: String let placeholder: LocalizedStringKey let symbol: SFSymbol let showClearButton: Bool @Binding var text: String init(_ name: String, placeholder: LocalizedStringKey, symbol: SFSymbol, showClearButton: Bool = false, text: Binding) { self.name = name self.placeholder = placeholder self.symbol = symbol self.showClearButton = showClearButton self._text = text } var body: some View { TextField(name, text: $text, prompt: Text(placeholder)) .padding(7) .padding(.horizontal, 25) .background(Color(.systemGray5)) .cornerRadius(8) .overlay( HStack { Image(systemSymbol: symbol) .foregroundColor(.gray) .frame(minWidth: 0, maxWidth: .infinity, alignment: .leading) .padding(.leading, 8) if showClearButton && text != "" { Button(action: { self.text = "" }) { Image(systemSymbol: .multiplyCircleFill) .foregroundColor(.gray) .padding(.trailing, 8) } } } ) } } struct TextEntryField_Previews: PreviewProvider { static var previews: some View { TextEntryField("Test", placeholder: "Enter text...", symbol: .textformat, text: .constant("")) .previewLayout(.fixed(width: 375, height: 50)) } }