mana-swift-core/Sources/ManaTokens/Spacing/Spacing.swift
Till JS df6f67ee45 v1.0.0 — initiale Extraktion aus memoro-native
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>
2026-05-12 19:13:31 +02:00

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
}
}
}