import SwiftUI extension Color { init(hex: String) { let hex = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) var int: UInt64 = 0 Scanner(string: hex).scanHexInt64(&int) let a, r, g, b: UInt64 switch hex.count { case 3: (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17) case 6: (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF) case 8: (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF) default: (a, r, g, b) = (255, 0, 0, 0) } self.init(.sRGB, red: Double(r)/255, green: Double(g)/255, blue: Double(b)/255, opacity: Double(a)/255) } } @main struct PulseHealthApp: App { @StateObject private var authManager = AuthManager() var body: some Scene { WindowGroup { if authManager.isLoggedIn { DashboardView().environmentObject(authManager) } else { LoginView().environmentObject(authManager) } } } } class AuthManager: ObservableObject { @Published var isLoggedIn: Bool = false @Published var token: String = "" @Published var userName: String = "" @Published var apiKey: String = "" init() { token = UserDefaults.standard.string(forKey: "authToken") ?? "" userName = UserDefaults.standard.string(forKey: "userName") ?? "" apiKey = UserDefaults.standard.string(forKey: "apiKey") ?? "" isLoggedIn = !token.isEmpty } func login(token: String, name: String, apiKey: String) { self.token = token; self.userName = name; self.apiKey = apiKey UserDefaults.standard.set(token, forKey: "authToken") UserDefaults.standard.set(name, forKey: "userName") UserDefaults.standard.set(apiKey, forKey: "apiKey") isLoggedIn = true } func logout() { token = ""; userName = ""; apiKey = "" UserDefaults.standard.removeObject(forKey: "authToken") UserDefaults.standard.removeObject(forKey: "userName") UserDefaults.standard.removeObject(forKey: "apiKey") isLoggedIn = false } }