import SwiftUI enum Route: Hashable { case terms, policy case registration, loginEmail case otp(email: String, phoneNumber: String) } struct AuthFlowView: View { @Binding var root: RootFlow @Binding var selectedTab: MainTab let tokenStore: TokenStore @Binding var appState: AppState var shouldPrepareLoginEntry: Bool = false var authEntryAnimationToken: Int = 0 @State var path: [Route] = [] var body: some View { NavigationStack(path: $path) { LoginView( root: $root, selectedTab: $selectedTab, tokenStore: tokenStore, appState: $appState, shouldPrepareEntryAnimation: shouldPrepareLoginEntry, authEntryAnimationToken: authEntryAnimationToken ) { route in path.append(route) } .navigationDestination(for: Route.self) { route in switch route { case .terms: TermsOfUseView() case .policy: PrivacyPolicyView() case .registration: RegistrationView(root: $root, selectedTab: $selectedTab, tokenStore: tokenStore, appState: $appState, navigate: { route in path.append(route) }) case .loginEmail: LoginEmailView(root: $root, selectedTab: $selectedTab, tokenStore: tokenStore, appState: $appState, navigate: { route in path.append(route) }) case .otp(let email, let phoneNumber): OtpView(email: email, phoneNumber: phoneNumber, root: $root, selectedTab: $selectedTab, tokenStore: tokenStore, appState: $appState) } } } } }