import SwiftUI

/// Top-level router: which screen the user sees is entirely a function of
/// `AppState.phase`. Nothing else in the app should make navigation
/// decisions based on auth state — route through here instead.
struct RootView: View {
    @EnvironmentObject private var appState: AppState

    var body: some View {
        Group {
            switch appState.phase {
            case .checking:
                LaunchView()
            case .signedOut:
                // Provided by Features/Auth/AuthFlowView.swift
                AuthFlowView()
            case .signedIn:
                // Provided by Features/Root/MainTabView.swift
                MainTabView()
            }
        }
        .animation(.default, value: appState.phase)
    }
}

private struct LaunchView: View {
    var body: some View {
        VStack(spacing: ZenithSpacing.xs) {
            Image(systemName: "doc.text.viewfinder")
                .font(.system(size: 44))
                .foregroundStyle(.zenithBlack)
            ProgressView()
                .tint(.zenithBlack)
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity)
        .background(Color.zenithBg)
    }
}
