import SwiftUI /// Root navigation — switches between Login, BusinessList, and Scan screens struct RootView: View { @EnvironmentObject var appState: AppState var body: some View { ZStack { switch appState.currentScreen { case .login: LoginView() .transition(.opacity) case .businessList: BusinessListView() .transition(.move(edge: .trailing)) case .scan(let business): ScanView(business: business) .transition(.move(edge: .trailing)) } } .animation(.easeInOut(duration: 0.3), value: screenKey) .overlay(alignment: .top) { if APIConfig.isDev { DevBanner() } } } /// Stable key for animation private var screenKey: String { switch appState.currentScreen { case .login: return "login" case .businessList: return "businesses" case .scan(let b): return "scan-\(b.id)" } } }