// // URLHintSettingsView.swift // Todos // // Created by Sam Jaffe on 3/2/26. // import SwiftUI struct URLHintSettingsView: View { @AppStorage(UserDefaultsKeys.UrlHints) var allHints = CodableArray() @State var active = URLHint() var body: some View { Text("Custom rules to expand a tag into a URL") Table(of: Binding.self) { TableColumn("Tag Prefix") { hint in TextField("", text: hint.prefix) .onSubmit(addHint) } TableColumn("URL Expansion") { hint in TextField("", text: hint.replacement) .onSubmit(addHint) } TableColumn("") { hint in if hint.id != active.id { Button() { allHints.removeAll(where: { $0.id == hint.id }) } label: { Label("", systemImage: "trash") } } }.width(max: 20) } rows: { ForEach($allHints) { hint in TableRow(hint) } TableRow($active) } } private func addHint() { if active.valid { allHints.append(active) active = URLHint() } } } #Preview { URLHintSettingsView() }