import { WelcomePage } from "./WelcomePage";
import { LandingPage } from "./LandingPage";
import { AboutUsPage } from "./AboutUsPage";
import { ContactUsPage } from "./ContactUsPage";
import { SignUpPage } from "./SignUpPage";
import { SignInPage } from "./SignInPage";
import { Dashboard } from "./Dashboard";
import { GroupSavings } from "./GroupSavings";
import { UtilityPayments } from "./UtilityPayments";
import { NotificationSettings } from "./NotificationSettings";
import { P2PTransfer } from "./P2PTransfer";
import { AdminDashboard } from "./AdminDashboard";
import { toast } from "sonner@2.0.3";
import { AppPage, User, SignUpData, SignInCredentials } from "../types/app";

interface PageRouterProps {
  currentPage: AppPage;
  user: User | null;
  isMobile: boolean;
  onGetStarted: () => void;
  onLandingNavigate: (page: "about" | "contact" | "sign-in" | "sign-up") => void;
  onBackToLanding: () => void;
  onSignUp: (userData: SignUpData) => void;
  onSignIn: (credentials: SignInCredentials) => void;
  onLogout: () => void;
  onNavigate: (page: string) => void;
  onBackToDashboard: () => void;
  onSetCurrentPage: (page: AppPage) => void;
}

export function PageRouter({
  currentPage,
  user,
  isMobile,
  onGetStarted,
  onLandingNavigate,
  onBackToLanding,
  onSignUp,
  onSignIn,
  onLogout,
  onNavigate,
  onBackToDashboard,
  onSetCurrentPage
}: PageRouterProps) {
  
  const renderCurrentPage = () => {
    switch (currentPage) {
      case "welcome":
        return (
          <WelcomePage 
            onGetStarted={onGetStarted}
            onSignUp={() => onSetCurrentPage("sign-up")}
            onSignIn={() => onSetCurrentPage("sign-in")}
            onGoogleAuth={() => {
              // Mock Google auth - could be implemented later
              toast.info("Google Sign In coming soon!", {
                description: "This feature will be available in the next update."
              });
            }}
          />
        );
      
      case "landing":
        return <LandingPage onNavigate={onLandingNavigate} />;
      
      case "about":
        return (
          <AboutUsPage
            onBack={onBackToLanding}
            onNavigate={onLandingNavigate}
          />
        );
      
      case "contact":
        return (
          <ContactUsPage
            onBack={onBackToLanding}
            onNavigate={onLandingNavigate}
          />
        );
      
      case "sign-up":
        return (
          <SignUpPage
            onBack={onBackToLanding}
            onSignUp={onSignUp}
            onGoToSignIn={() => onSetCurrentPage("sign-in")}
          />
        );
      
      case "sign-in":
        return (
          <SignInPage
            onBack={onBackToLanding}
            onSignIn={onSignIn}
            onGoToSignUp={() => onSetCurrentPage("sign-up")}
          />
        );
      
      case "dashboard":
        return (
          <Dashboard
            user={user}
            onLogout={onLogout}
            onNavigate={onNavigate}
          />
        );
      
      case "admin":
        return (
          <AdminDashboard
            onBack={onLogout}
            currentUser={user}
          />
        );
      
      case "group-savings":
        return <GroupSavings onBack={onBackToDashboard} />;
      
      case "pay-bills":
        return (
          <UtilityPayments
            onBack={onBackToDashboard}
            spendingBalance={25000.75}
          />
        );
      
      case "p2p-transfer":
        return (
          <P2PTransfer
            onBack={onBackToDashboard}
            spendingBalance={25000.75}
            currentUser={user}
          />
        );
      
      case "notifications":
        return <NotificationSettings onBack={onBackToDashboard} />;
      
      default:
        return isMobile ? <WelcomePage onGetStarted={onGetStarted} /> : <LandingPage onNavigate={onLandingNavigate} />;
    }
  };

  return <>{renderCurrentPage()}</>;
}