ManaCore + ManaTokens als Swift-Package für alle nativen mana-e.V.-Apps. Phase α aus mana/docs/MANA_SWIFT.md durch. ManaCore: - AuthClient gegen mana-auth (Login, Refresh, Status-Maschine) - AuthenticatedTransport (URLSession + 401-Retry) - ManaAppConfig-Protocol für App-injizierbare Konfig - KeychainStore mit optionaler Shared-Access-Group - JWT-Parser für lokale Expiry-Prüfung - AuthError, CoreLog (interne OSLog-Logger) ManaTokens: - 12 Vereins-Tokens als dynamic Light/Dark Colors - 5 Brand-Literale (mana-yellow, spectrum-orange, ...) - Spacing, Radius, Typography aus mana/docs/THEMING.md Tests: 12 Unit-Tests grün via swift test. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
48 lines
1.2 KiB
Swift
48 lines
1.2 KiB
Swift
import CoreGraphics
|
|
|
|
/// Spacing-Skala für Padding, Margins, Stack-Spacing.
|
|
///
|
|
/// Tailwind-kompatible Werte. `mana/docs/THEMING.md` definiert die
|
|
/// Achse `density` (compact/normal/comfortable) — diese skaliert hier
|
|
/// nicht, sondern wird in der App über einen Multiplikator angewandt
|
|
/// (siehe `densityScale`).
|
|
public enum Spacing {
|
|
/// 4pt — sehr eng
|
|
public static let xxs: CGFloat = 4
|
|
|
|
/// 8pt — eng
|
|
public static let xs: CGFloat = 8
|
|
|
|
/// 12pt
|
|
public static let sm: CGFloat = 12
|
|
|
|
/// 16pt — Standard-Abstand zwischen Elementen
|
|
public static let md: CGFloat = 16
|
|
|
|
/// 24pt
|
|
public static let lg: CGFloat = 24
|
|
|
|
/// 32pt — Sektion-Abstand
|
|
public static let xl: CGFloat = 32
|
|
|
|
/// 48pt — Major-Sektion
|
|
public static let xxl: CGFloat = 48
|
|
|
|
/// 64pt
|
|
public static let xxxl: CGFloat = 64
|
|
}
|
|
|
|
/// Multiplikator für die `density`-Achse aus `mana/docs/THEMING.md`.
|
|
public enum Density: Sendable {
|
|
case compact
|
|
case normal
|
|
case comfortable
|
|
|
|
public var scale: CGFloat {
|
|
switch self {
|
|
case .compact: 0.85
|
|
case .normal: 1.0
|
|
case .comfortable: 1.15
|
|
}
|
|
}
|
|
}
|