mana-swift-ui/Package.swift
Till JS 75741ec111 ManaTransparencyUI: geteilter nativer „Danke & Transparenz"-Renderer (P1)
Neues Library-Product — Pendant zur Android-/Web-Fläche (siehe
mana/docs/TRANSPARENZ.md). Pure SwiftUI, app-agnostisch, keine Deps.
- ManaCredit (Codable/Sendable) + ManaTransparencyData.load() für die vom
  Generator erzeugte JSON.
- ManaTransparencyView(intro:entries:) gruppiert nach Sektion, Einträge mit
  Lizenz + tippbarem Link.
swift build + 2 Tests grün.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 20:37:28 +02:00

167 lines
6.3 KiB
Swift

// swift-tools-version: 6.0
import PackageDescription
let package = Package(
name: "mana-swift-ui",
defaultLocalization: "de",
platforms: [
.iOS(.v18),
.macOS(.v15),
],
products: [
.library(name: "ManaAuthUI", targets: ["ManaAuthUI"]),
.library(name: "ManaWebShell", targets: ["ManaWebShell"]),
.library(name: "ManaLLMUI", targets: ["ManaLLMUI"]),
.library(name: "ManaFeedbackUI", targets: ["ManaFeedbackUI"]),
.library(name: "ManaThemeUI", targets: ["ManaThemeUI"]),
.library(name: "ManaComponentsUI", targets: ["ManaComponentsUI"]),
.library(name: "ManaOnboardingUI", targets: ["ManaOnboardingUI"]),
.library(name: "ManaCreditsUI", targets: ["ManaCreditsUI"]),
.library(name: "ManaTransparencyUI", targets: ["ManaTransparencyUI"]),
],
dependencies: [
// Lokaler Dev-Pfad. Apps konsumieren beide Pakete parallel über
// `path: ../mana-swift-core` bzw. `path: ../mana-swift-ui`.
// Release-Wechsel auf `from: "1.1.0"` kommt mit Phase 4.
.package(path: "../mana-swift-core"),
// ManaLLMUI baut auf den Backend-Schicht aus mana-swift-llm.
// Apps die nur die Backends headless brauchen, importieren
// weiter direkt `ManaLLM` — ManaLLMUI ist additiv für die
// Settings-Schicht (Picker, Prepare, Cellular-Toggle).
.package(path: "../mana-swift-llm"),
],
targets: [
.target(
name: "ManaAuthUI",
dependencies: [
.product(name: "ManaCore", package: "mana-swift-core"),
.product(name: "ManaTokens", package: "mana-swift-core"),
// Feedback-Karte an fester Position im Konto-Tab (ManaAccountView).
"ManaFeedbackUI",
// Geteiltes Karten-Chrome (.manaCard) für ManaSignInCTA.
"ManaThemeUI",
// Opt-in Gesamt-Mana-Anzeige (ManaAccountView.Config.showManaBalance).
"ManaCreditsUI",
],
path: "Sources/ManaAuthUI",
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency"),
]
),
.target(
name: "ManaWebShell",
path: "Sources/ManaWebShell",
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency"),
]
),
.target(
name: "ManaLLMUI",
dependencies: [
.product(name: "ManaLLM", package: "mana-swift-llm"),
.product(name: "ManaLLMShared", package: "mana-swift-llm"),
],
path: "Sources/ManaLLMUI",
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency"),
]
),
.target(
name: "ManaFeedbackUI",
dependencies: [
.product(name: "ManaCore", package: "mana-swift-core"),
.product(name: "ManaTokens", package: "mana-swift-core"),
// Geteiltes Karten-Chrome (.manaCard) für ManaFeedbackCard.
"ManaThemeUI",
],
path: "Sources/ManaFeedbackUI",
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency"),
]
),
.target(
name: "ManaThemeUI",
dependencies: [
.product(name: "ManaTokens", package: "mana-swift-core"),
],
path: "Sources/ManaThemeUI",
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency"),
]
),
.target(
name: "ManaComponentsUI",
dependencies: [
.product(name: "ManaTokens", package: "mana-swift-core"),
],
path: "Sources/ManaComponentsUI",
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency"),
]
),
.target(
name: "ManaCreditsUI",
dependencies: [
// Nutzt den ManaCreditsClient aus ManaCore; System-Styling
// (app-agnostisch), daher keine ManaTokens-Abhängigkeit.
.product(name: "ManaCore", package: "mana-swift-core"),
],
path: "Sources/ManaCreditsUI",
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency"),
]
),
.target(
name: "ManaOnboardingUI",
dependencies: [
.product(name: "ManaTokens", package: "mana-swift-core"),
// Geteiltes Karten-Chrome (.manaCard) für die Permission-
// und Konto-Karten am Ende des Flows.
"ManaThemeUI",
],
path: "Sources/ManaOnboardingUI",
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency"),
]
),
.target(
// „Danke & Transparenz" — Open-Source-Dank + Stack-Offenlegung.
// Pure SwiftUI, app-agnostisch (System-Styling), keine Deps.
// Daten kommen aus der generierten JSON (scripts/transparenz/).
name: "ManaTransparencyUI",
path: "Sources/ManaTransparencyUI",
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency"),
]
),
.testTarget(
name: "ManaOnboardingUITests",
dependencies: ["ManaOnboardingUI"],
path: "Tests/ManaOnboardingUITests"
),
.testTarget(
name: "ManaTransparencyUITests",
dependencies: ["ManaTransparencyUI"],
path: "Tests/ManaTransparencyUITests"
),
.testTarget(
name: "ManaAuthUITests",
dependencies: ["ManaAuthUI"],
path: "Tests/ManaAuthUITests"
),
.testTarget(
name: "ManaWebShellTests",
dependencies: ["ManaWebShell"],
path: "Tests/ManaWebShellTests"
),
.testTarget(
name: "ManaComponentsUITests",
dependencies: ["ManaComponentsUI"],
path: "Tests/ManaComponentsUITests"
),
// ManaLLMUITests: deklariert, aber `Tests/ManaLLMUITests/`
// wurde nie angelegt — SPM verweigert Resolve. Entfernt
// 2026-05-22, wieder einfügen sobald die ersten ViewModel-
// Tests stehen.
]
)