Kacheln und Fenster sprechen dieselbe Sprache
Alle Kacheln, Popovers und Fenster auf die Designschicht umgestellt: rund hundert gesetzte Schriftgrößen und 159 gesetzte Abstände und Radien sind jetzt Token. Übrig bleibt `spacing: 0` — das ist eine Aussage, keine geratene Zahl. Die Einstellungen bekommen eine Seitenleiste statt sieben Reitern, deren deutsche Beschriftungen zusammen 880 Punkte brauchten. Panel-Token stehen nicht mehr in Fenstern: dort gilt Systemsemantik, damit der Hellmodus nicht schwarz auf schwarz endet. Neu ist ein Schaufenster, das alle Bauteile nebeneinander zeigt — ohne das lässt sich eine Änderung an einem Token nur prüfen, indem man die App bedient, bis jede Kachel einmal zu sehen war. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
9b600de9a9
commit
edb327cabe
@@ -0,0 +1,69 @@
|
||||
import SwiftUI
|
||||
|
||||
/// Die Bereiche des Einstellungsfensters.
|
||||
///
|
||||
/// **Seitenleiste statt Reiterband.** Sieben deutsche Reiterbeschriftungen
|
||||
/// brauchten rund 880 Punkte nebeneinander — das Fenster hatte deshalb eine
|
||||
/// Mindestbreite, die nichts mit seinem Inhalt zu tun hatte, sondern nur damit,
|
||||
/// dass sonst der erste und der letzte Reiter über die Kante hinausragten. Eine
|
||||
/// Seitenleiste wächst nach unten, und dort ist Platz.
|
||||
///
|
||||
/// **Keine leeren Einträge auf Vorrat.** Sperrbildschirm, Zwischenablage und
|
||||
/// Notizen kommen mit ihren Phasen. Ein Eintrag, der sich öffnen lässt und
|
||||
/// nichts enthält, ist ein Versprechen, das die App nicht hält.
|
||||
enum SettingsSection: String, CaseIterable, Identifiable, Hashable {
|
||||
case general
|
||||
case widgets
|
||||
case widgetOptions
|
||||
case notch
|
||||
case appearance
|
||||
case menubar
|
||||
case fans
|
||||
case permissions
|
||||
|
||||
var id: Self { self }
|
||||
|
||||
var title: String {
|
||||
switch self {
|
||||
case .general: String(localized: "settings.general")
|
||||
case .widgets: String(localized: "settings.tab.widgets")
|
||||
case .widgetOptions: String(localized: "settings.tab.options")
|
||||
case .notch: String(localized: "settings.section.notch")
|
||||
case .appearance: String(localized: "settings.section.appearance")
|
||||
case .menubar: String(localized: "settings.tab.menubar")
|
||||
case .fans: String(localized: "settings.tab.fans")
|
||||
case .permissions: String(localized: "settings.tab.permissions")
|
||||
}
|
||||
}
|
||||
|
||||
var symbol: String {
|
||||
switch self {
|
||||
case .general: "gearshape.fill"
|
||||
case .widgets: "square.grid.2x2.fill"
|
||||
case .widgetOptions: "wrench.adjustable.fill"
|
||||
case .notch: "macbook"
|
||||
case .appearance: "paintpalette.fill"
|
||||
case .menubar: "menubar.rectangle"
|
||||
case .fans: "fan.fill"
|
||||
case .permissions: "lock.fill"
|
||||
}
|
||||
}
|
||||
|
||||
/// Die Farbe des Plättchens.
|
||||
///
|
||||
/// Fest und **nicht** die Akzentfarbe: acht Einträge in derselben Farbe
|
||||
/// wären wieder acht gleich aussehende Zeilen. Die Farbe unterscheidet
|
||||
/// hier, sie schmückt nicht.
|
||||
var tint: Color {
|
||||
switch self {
|
||||
case .general: Color(red: 0.44, green: 0.47, blue: 0.51)
|
||||
case .widgets: Color(red: 0.31, green: 0.53, blue: 0.93)
|
||||
case .widgetOptions: Color(red: 0.29, green: 0.68, blue: 0.66)
|
||||
case .notch: Color(red: 0.55, green: 0.44, blue: 0.85)
|
||||
case .appearance: Color(red: 0.90, green: 0.60, blue: 0.28)
|
||||
case .menubar: Color(red: 0.85, green: 0.45, blue: 0.66)
|
||||
case .fans: Color(red: 0.33, green: 0.68, blue: 0.85)
|
||||
case .permissions: Color(red: 0.82, green: 0.37, blue: 0.35)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user