live activity: tint pump glyph by monitored fuel

Move FuelType.tintColor (green=unleaded #30D158, yellow=premium #FFD60A,
cyan=diesel #64D2FF) into Shared/FuelStore.swift so the app, widget, and
Live Activity all read one definition (was app-only in StationsView, so the
widget couldn't see it). Tint the Live Activity rich card pump icon and the
Dynamic Island compactLeading pump by context.state.fuel.tintColor.
This commit is contained in:
FuelBoard Contributor
2026-08-19 22:18:56 +01:00
parent a6620d36f7
commit 2c6e63f6b1
3 changed files with 17 additions and 13 deletions
-11
View File
@@ -317,17 +317,6 @@ extension FuelType {
case .diesel: return "Diesel" case .diesel: return "Diesel"
} }
} }
/// Fuel colour wheel (user-chosen palette): green = unleaded (#30D158),
/// yellow = premium (#FFD60A), cyan = diesel (#64D2FF). Used for the
/// fuel-type tab icons and the title icon.
var tintColor: Color {
switch self {
case .e10: return Color(red: 48/255.0, green: 209/255.0, blue: 88/255.0) // #30D158
case .e5: return Color(red: 255/255.0, green: 214/255.0, blue: 10/255.0) // #FFD60A
case .diesel: return Color(red: 100/255.0, green: 210/255.0, blue: 255/255.0) // #64D2FF
}
}
} }
/// Fuel-type selector styled like a segmented control, with a coloured pump /// Fuel-type selector styled like a segmented control, with a coloured pump
@@ -41,7 +41,7 @@ struct FuelBoardLiveActivity: Widget {
} }
} compactLeading: { } compactLeading: {
Image(systemName: "fuelpump.fill") Image(systemName: "fuelpump.fill")
.foregroundStyle(.green) .foregroundStyle(context.state.fuel.tintColor)
} compactTrailing: { } compactTrailing: {
FuelBoardLiveActivityPriceView(context: context) FuelBoardLiveActivityPriceView(context: context)
} minimal: { } minimal: {
@@ -95,7 +95,7 @@ private struct FuelBoardLiveActivityView: View {
// LEFT station brand glyph // LEFT station brand glyph
Image(systemName: "fuelpump.circle.fill") Image(systemName: "fuelpump.circle.fill")
.font(.system(size: 32)) .font(.system(size: 32))
.foregroundStyle(.green, .white) .foregroundStyle(context.state.fuel.tintColor, .white)
.frame(width: 40, height: 40) .frame(width: 40, height: 40)
// MIDDLE fuel + station // MIDDLE fuel + station
+15
View File
@@ -8,6 +8,7 @@
// keychain app-group defaults fallback. // keychain app-group defaults fallback.
import Foundation import Foundation
import SwiftUI
import Security import Security
#if canImport(AppIntents) #if canImport(AppIntents)
import AppIntents import AppIntents
@@ -99,6 +100,20 @@ enum FuelType: String, Codable, CaseIterable, Identifiable {
} }
} }
/// Fuel colour wheel (user-chosen palette): green = unleaded (#30D158),
/// yellow = premium (#FFD60A), cyan = diesel (#64D2FF). Lives here in Shared
/// so the app, widget, and Live Activity all tint the pump/fuel glyphs from one
/// definition.
extension FuelType {
var tintColor: Color {
switch self {
case .e10: return Color(red: 48/255.0, green: 209/255.0, blue: 88/255.0) // #30D158
case .e5: return Color(red: 255/255.0, green: 214/255.0, blue: 10/255.0) // #FFD60A
case .diesel: return Color(red: 100/255.0, green: 210/255.0, blue: 255/255.0) // #64D2FF
}
}
}
#if canImport(AppIntents) #if canImport(AppIntents)
extension FuelType: AppEnum {} extension FuelType: AppEnum {}
#endif #endif