mana-swift-ui/Sources/ManaThemeUI/ManaShape.swift
Till JS 93355c1e10 Karten-Chrome vereinheitlichen: .manaCard + RoundedRectangle.mana + ManaAboutSection
- ManaThemeUI: geteiltes Karten-Chrome `.manaCard(...)` (continuous Squircle +
  optionaler Border aus EINER gemeinsamen Form, saubere Ecken) und
  `RoundedRectangle.mana(Radius.*)` als geteilte Ecken-Sprache.
- ManaSignInCTA (Login) + ManaFeedbackCard ziehen auf `.manaCard` — identisches
  Chrome, Login bekommt denselben Border, beide continuous.
- Rest-Chrome (Eingabefelder, Primary-Button, Feedback-Buttons, 2FA-QR/Codes/
  Kopier-Buttons) auf `RoundedRectangle.mana(Radius.*)`; keine cornerRadius-
  Literale mehr, Radien auf Token-Skala konvergiert.
- ManaAboutSection: vereinheitlichte „Über"-Sektion (App/Version/Build + Links),
  opt-in via `ManaAccountView(about:)`.

Kein API-Bruch (alles additiv/optisch). CHANGELOG aktualisiert.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 13:26:26 +02:00

25 lines
1.1 KiB
Swift

import ManaTokens
import SwiftUI
public extension RoundedRectangle {
/// Vereins-Standard-Form: ein `RoundedRectangle` mit **continuous**
/// (Apple-Squircle-)Ecke an einem ``ManaTokens/Radius``-Token.
///
/// Ein Aufruf statt überall `RoundedRectangle(cornerRadius:style:.continuous)`
/// zu wiederholen — hält Buttons, Eingabefelder und kleine Inline-Boxen auf
/// derselben Ecken-Sprache wie die Karten aus
/// ``SwiftUICore/View/manaCard(surface:border:cornerRadius:borderWidth:padding:alignment:)``,
/// und verhindert, dass einzelne Stellen still auf den eckigeren
/// `.circular`-Default zurückfallen.
///
/// ```swift
/// .background(brand.surface, in: RoundedRectangle.mana(Radius.md))
/// .overlay(RoundedRectangle.mana(Radius.md).strokeBorder(brand.border, lineWidth: 0.5))
/// ```
///
/// - Parameter radius: Eckenradius, idiomatisch ein ``ManaTokens/Radius``-
/// Token (`Radius.sm`/`Radius.md`/`Radius.lg`/`Radius.xl`).
static func mana(_ radius: CGFloat) -> RoundedRectangle {
RoundedRectangle(cornerRadius: radius, style: .continuous)
}
}