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>
42 lines
1,001 B
Swift
42 lines
1,001 B
Swift
import CoreGraphics
|
|
|
|
/// Border-Radius-Werte für die drei Vereins-Modi `sharp`, `soft`, `pill`
|
|
/// aus `mana/docs/THEMING.md`. Apps wählen einen Default und lassen
|
|
/// User optional umstellen.
|
|
public enum Radius {
|
|
/// 0pt — sharp-Modus
|
|
public static let sharp: CGFloat = 0
|
|
|
|
/// 2pt — kantig-aber-nicht-spitz
|
|
public static let xs: CGFloat = 2
|
|
|
|
/// 4pt
|
|
public static let sm: CGFloat = 4
|
|
|
|
/// 8pt — Standard für Buttons, Cards (soft-Modus)
|
|
public static let md: CGFloat = 8
|
|
|
|
/// 12pt
|
|
public static let lg: CGFloat = 12
|
|
|
|
/// 16pt
|
|
public static let xl: CGFloat = 16
|
|
|
|
/// 9999pt — voll abgerundet (pill-Modus)
|
|
public static let pill: CGFloat = 9999
|
|
}
|
|
|
|
/// Multiplikator für die `radius`-Achse aus `mana/docs/THEMING.md`.
|
|
public enum RadiusMode: Sendable {
|
|
case sharp
|
|
case soft
|
|
case pill
|
|
|
|
public var scale: CGFloat {
|
|
switch self {
|
|
case .sharp: 0
|
|
case .soft: 1
|
|
case .pill: 2
|
|
}
|
|
}
|
|
}
|