// // Shared.swift // OS Vault // // Author: Simon-Pierre Boucher // Mail: contact@spboucher.ai // import SwiftUI /// Prominent badge so the user always knows which chain they are on. struct NetworkBadge: View { let network: Network var body: some View { Text(network.config.isTestnet ? "TESTNET · \(network.config.displayName)" : network.config.displayName) .font(.caption.weight(.bold)) .padding(.horizontal, 10) .padding(.vertical, 4) .background(network.config.isTestnet ? Color.orange.opacity(0.25) : Color.blue.opacity(0.18)) .foregroundStyle(network.config.isTestnet ? Color.orange : Color.blue) .clipShape(Capsule()) } } extension String { /// "0x9858…da94" for tight UI spots. var shortAddress: String { guard count == 42 else { return self } return "\(prefix(6))…\(suffix(4))" } } struct CopyButton: View { let text: String @State private var copied = false var body: some View { Button { NSPasteboard.general.clearContents() NSPasteboard.general.setString(text, forType: .string) copied = true Task { try? await Task.sleep(for: .seconds(1.5)) copied = false } } label: { Label(copied ? "Copied" : "Copy", systemImage: copied ? "checkmark" : "doc.on.doc") } } }