import SwiftUI import UIKit import UniformTypeIdentifiers /// Phase ζ-4 Placeholder — Share-Extension „An Zitare schicken". /// /// Aufgaben in ζ-4: /// /// - Empfängt `NSExtensionActivationSupportsText` + `WebURL`. /// - SwiftUI-Sheet mit Quote-Preview, Source-URL, „Als Draft /// speichern"-Button. /// - POST an `https://zitare-api.mana.how/api/v1/share/receive` /// mit Envelope-Type `mana/text` (siehe `zitare/app-manifest.json`). /// - Bei Network-Failure: in `PendingShareStore` unter App-Group /// persistieren, die App synct beim nächsten Launch. /// /// Erfordert ManaCore-Auth-Sharing über Keychain-Access-Group + /// App-Group. Auth-Bridge-Pattern aus cards-native (ShareExtension/) /// übernehmen, wenn ζ-4 startet. class ShareViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let hosting = UIHostingController( rootView: ShareRootView(onDone: { [weak self] in self?.extensionContext?.completeRequest(returningItems: nil) }) ) addChild(hosting) view.addSubview(hosting.view) hosting.view.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ hosting.view.topAnchor.constraint(equalTo: view.topAnchor), hosting.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), hosting.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), hosting.view.trailingAnchor.constraint(equalTo: view.trailingAnchor) ]) hosting.didMove(toParent: self) } } struct ShareRootView: View { let onDone: () -> Void var body: some View { VStack(spacing: 16) { Image(systemName: "quote.opening") .font(.system(size: 48)) Text("An Zitare schicken") .font(.headline) Text("ζ-4 — TODO: POST /api/v1/share/receive") .font(.caption) .foregroundStyle(.secondary) Button("Schließen", action: onDone) .buttonStyle(.borderedProminent) } .padding() } }