import SwiftUI /// Die Schriftskala der App. /// /// Durchgehend die Systemschrift mit `Font.TextStyle` als Grundlage, damit /// Dynamic Type wirkt. Die Rolle steht im Namen, nicht die Größe — sonst /// führt jede Anpassung zu einer Suche quer durch alle Views. extension Font { /// Der Titel im Aufmacher-Bild. public static let flixyHero = Font.system(.largeTitle, design: .default, weight: .bold) /// Titel auf Detailseiten. public static let flixyTitle = Font.system(.title2, design: .default, weight: .semibold) /// Überschrift einer Reihe auf der Startseite. public static let flixyRowHeader = Font.system(.headline, design: .default, weight: .semibold) /// Titel unter einem Poster. public static let flixyCardTitle = Font.system(.subheadline, design: .default, weight: .medium) /// Fließtext, Beschreibungen. public static let flixyBody = Font.system(.body) /// Jahreszahl, Laufzeit, Auflösung — alles, was neben dem Titel steht. public static let flixyCaption = Font.system(.caption) } /// Abstände. /// /// Eine Skala statt frei gewählter Zahlen: dadurch stimmen die Ränder zwischen /// Bildschirmen überein, ohne dass man sie einzeln nachmisst. public enum FlixySpacing { public static let tight: CGFloat = 4 public static let snug: CGFloat = 8 public static let regular: CGFloat = 12 public static let loose: CGFloat = 16 public static let section: CGFloat = 24 /// Der seitliche Rand des Inhalts zum Bildschirmrand. public static let screenMargin: CGFloat = 16 } public enum FlixyRadius { public static let card: CGFloat = 8 public static let sheet: CGFloat = 16 public static let control: CGFloat = 10 } /// Die Seitenverhältnisse, in denen Plex seine Bilder liefert. /// /// An einer Stelle, weil ein falscher Wert nicht auffällt, sondern nur /// beschneidet: ein 16:9-Hintergrundbild in einem 3:4-Rahmen verliert links /// und rechts je ein Viertel, und man sieht dem Ergebnis nicht an, dass etwas /// fehlt. public enum FlixyAspectRatio { /// Kinoplakate im Hochformat. public static let poster: CGFloat = 2.0 / 3.0 /// Szenenbilder und Hintergrundbilder. public static let landscape: CGFloat = 16.0 / 9.0 /// Der Aufmacher auf der Startseite — dasselbe wie `landscape`, weil Plex /// dafür `art` liefert. public static let hero: CGFloat = landscape }