Standard-Akzentfarbe auf Mint

Statt Ember-Rot ist Mint (#3DD68C) die Voreinstellung. Teal und Lime
bleiben als Alternativen in der Palette.

Gesucht wird sie über die Kennung, nicht über den Index: sonst würde ein
Umsortieren der Palette die Standardfarbe still mitändern — und zwar nur
für Neuinstallationen, was beim Suchen besonders unangenehm ist. Drei
Tests halten das fest.

Wer bereits eine Farbe gewählt hat, behält sie.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido
2026-09-11 19:02:09 +02:00
co-authored by Claude Opus 5
parent 5c0c1d651d
commit 12aac72bb9
3 changed files with 2067 additions and 1987 deletions
File diff suppressed because it is too large Load Diff
@@ -40,7 +40,12 @@ extension AccentOption {
AccentOption(id: "rose", name: "Rose", color: RGB(hex: 0xF76190)), AccentOption(id: "rose", name: "Rose", color: RGB(hex: 0xF76190)),
] ]
public static let `default` = palette[0] /// Die Voreinstellung.
///
/// Über die Kennung gesucht, nicht über den Index: sonst würde ein
/// Umsortieren der Palette unbemerkt die Standardfarbe ändern — und zwar
/// nur für Neuinstallationen, was beim Suchen besonders unangenehm ist.
public static let `default` = palette.first { $0.id == "mint" } ?? palette[0]
/// Die Kennung, unter der eine frei gewählte Farbe abgelegt wird. /// Die Kennung, unter der eine frei gewählte Farbe abgelegt wird.
public static let customIdentifier = "custom" public static let customIdentifier = "custom"
@@ -125,3 +125,25 @@ struct RGBTests {
} }
} }
} }
@Suite("Standard-Akzentfarbe")
struct DefaultAccentTests {
@Test("Die Voreinstellung ist Mint")
func defaultIsMint() {
// Festgehalten, damit ein Umsortieren der Palette sie nicht still
// verändert. Wer sie bewusst wechselt, ändert auch diesen Test.
#expect(AccentOption.default.id == "mint")
#expect(AccentOption.default.color == RGB(hex: 0x3DD68C))
}
@Test("Die Voreinstellung steht in der Palette")
func defaultIsPartOfThePalette() {
#expect(AccentOption.palette.contains(AccentOption.default))
}
@Test("Die Voreinstellung braucht keine Kontrastkorrektur")
func defaultNeedsNoCorrection() {
let corrected = Contrast.legible(AccentOption.default.color, on: FlixyColor.canvas)
#expect(corrected == AccentOption.default.color)
}
}