import { Route, Switch } from "wouter";
import { QueryClientProvider } from "@tanstack/react-query";
import { Suspense, lazy } from "react";
import { queryClient } from "./lib/queryClient";
import { Toaster } from "@/components/ui/toaster";
import { TooltipProvider } from "@/components/ui/tooltip";
import { HelmetProvider } from "react-helmet-async";
import { CookiesProvider } from 'react-cookie';
import { LocationProvider } from "@/hooks/useLocation";
import { AuthProvider } from "@/hooks/use-auth";
import { ComplyAuthProvider } from "@/hooks/useComplyAuth";
import { ProtectedRoute } from "@/lib/protected-route";
import OrganizationStructuredData from "@/components/OrganizationStructuredData";
import DesktopWhatsAppButton from "@/components/DesktopWhatsAppButton";
import { SkipNavigation } from "@/components/AccessibilityEnhancements";
import PerformanceOptimizer from "@/components/PerformanceOptimizer";
import { CountryProvider } from "@/contexts/CountryContext";
import SimplySetupChat from "@/components/SimplySetupChat";

// Critical pages - loaded immediately with preloading optimization
import NotFound from "@/pages/not-found";
import Home from "@/pages/Home";

// High-priority pages - lazy loaded with preloading
const WorkspacesPage = lazy(() => import("@/pages/WorkspacesPage"));
const WorkspacePage = lazy(() => import("@/pages/WorkspacePage"));

// Non-critical pages - lazy loaded
const LocationPage = lazy(() => import("@/pages/LocationPage"));
const AwfisPartnership = lazy(() => import("@/pages/AwfisPartnership"));
const AboutPage = lazy(() => import("@/pages/AboutPage"));
const ContactPage = lazy(() => import("@/pages/ContactPage"));
const ThankYouPage = lazy(() => import("@/pages/ThankYouPage"));
const PaymentSuccessPage = lazy(() => import("@/pages/PaymentSuccessPage"));
const Admin = lazy(() => import("@/pages/Admin"));
const DocuKitAdmin = lazy(() => import("@/pages/admin/DocuKitAdmin"));
const MenuAdmin = lazy(() => import("@/pages/admin/MenuAdmin"));
const SimplySetupLeadsAdmin = lazy(() => import("@/pages/admin/SimplySetupLeadsAdmin"));
const BlogPage = lazy(() => import("@/pages/BlogPage"));
const BlogPostPage = lazy(() => import("@/pages/BlogPostPage"));
const BlogTagPage = lazy(() => import("@/pages/BlogTagPage"));
const AuthPage = lazy(() => import("@/pages/auth-page"));
const PrivacyPolicyPage = lazy(() => import("@/pages/PrivacyPolicyPage"));
const TermsOfServicePage = lazy(() => import("@/pages/TermsOfServicePage"));
const SitemapPage = lazy(() => import("@/pages/SitemapPage"));
const VirtualOfficeBenefitsPage = lazy(() => import("@/pages/VirtualOfficeBenefitsPage"));
const AffordablePlansPage = lazy(() => import("@/pages/AffordablePlansPage"));
const RemoteWorkSolutionsPage = lazy(() => import("@/pages/RemoteWorkSolutionsPage"));
const StartupsPage = lazy(() => import("@/pages/StartupsPage"));
const EnterpriseSolutionsPage = lazy(() => import("@/pages/EnterpriseSolutionsPage"));
const CalculatorsPage = lazy(() => import("@/pages/CalculatorsPage"));
const StartupCostCalculatorPage = lazy(() => import("@/pages/StartupCostCalculatorPage"));
const VirtualOfficeROICalculatorPage = lazy(() => import("@/pages/VirtualOfficeROICalculatorPage"));
const BusinessSavingsCalculatorPage = lazy(() => import("@/pages/BusinessSavingsCalculatorPage"));
const CompanySearchPage = lazy(() => import("@/pages/CompanySearch"));
const CompanyProfilePage = lazy(() => import("@/pages/CompanyProfile"));
const CompanyRegistrationLandingPage = lazy(() => import("@/pages/CompanyRegistrationLandingPage"));
const VirtualOfficeCompanyRegistrationPage = lazy(() => import("@/pages/VirtualOfficeCompanyRegistrationPage"));
const PublicPage = lazy(() => import("@/pages/PublicPage"));

// State-specific Virtual Office Company Registration Pages
const AllStatesPage = lazy(() => import("@/pages/state-virtual-office/AllStatesPage"));
const StateVirtualOfficePage = lazy(() => import("@/pages/state-virtual-office/StateVirtualOfficePage"));

// City-specific Virtual Office Company Registration Pages
const MumbaiVirtualOfficePage = lazy(() => import("@/pages/city-virtual-office/MumbaiPage"));
const DelhiVirtualOfficePage = lazy(() => import("@/pages/city-virtual-office/DelhiPage"));
const BangaloreVirtualOfficePage = lazy(() => import("@/pages/city-virtual-office/BangalorePage"));
const HyderabadVirtualOfficePage = lazy(() => import("@/pages/city-virtual-office/HyderabadPage"));
const AhmedabadVirtualOfficePage = lazy(() => import("@/pages/city-virtual-office/AhmedabadPage"));
const ChennaiVirtualOfficePage = lazy(() => import("@/pages/city-virtual-office/ChennaiPage"));
const KolkataVirtualOfficePage = lazy(() => import("@/pages/city-virtual-office/KolkataPage"));
const PuneVirtualOfficePage = lazy(() => import("@/pages/city-virtual-office/PunePage"));
const JaipurVirtualOfficePage = lazy(() => import("@/pages/city-virtual-office/JaipurPage"));
const SuratVirtualOfficePage = lazy(() => import("@/pages/city-virtual-office/SuratPage"));
const NagpurVirtualOfficePage = lazy(() => import("@/pages/city-virtual-office/NagpurPage"));
const IndoreVirtualOfficePage = lazy(() => import("@/pages/city-virtual-office/IndorePage"));

// SimplySetup/Comply Pages
const ComplyAuth = lazy(() => import("@/pages/ComplyAuth"));
const ComplyDashboard = lazy(() => import("@/pages/ComplyDashboard"));
const ComplyTest = lazy(() => import("@/pages/ComplyTest"));

// Customer Portal Pages
const CustomerAuth = lazy(() => import("@/pages/customer/CustomerAuth"));
const CustomerOnboarding = lazy(() => import("@/pages/customer/CustomerOnboarding"));
const CustomerDashboard = lazy(() => import("@/pages/customer/CustomerDashboard"));

// New Use Case Pages
const TechStartupsPage = lazy(() => import("@/pages/TechStartupsPage"));
const FreelancersPage = lazy(() => import("@/pages/FreelancersPage"));
const EcommercePage = lazy(() => import("@/pages/EcommercePage"));
const ITCompaniesPage = lazy(() => import("@/pages/ITCompaniesPage"));
const GSTRegistrationPage = lazy(() => import("@/pages/GSTRegistrationPage"));
const GSTNumberSearchPage = lazy(() => import("@/pages/GSTNumberSearchPage"));
const GSTContactThankYouPage = lazy(() => import("@/pages/GSTContactThankYouPage"));
const GSTReturnCheckerPage = lazy(() => import("@/pages/GSTReturnCheckerPage"));
const BusinessRegistrationPage = lazy(() => import("@/pages/BusinessRegistrationPage"));
const RefundPolicyPage = lazy(() => import("@/pages/RefundPolicyPage"));
const DocuKitPage = lazy(() => import("@/pages/DocuKitPage"));
const DocuKitCategoryPage = lazy(() => import("@/pages/DocuKitCategoryPage"));
const TemplateDetailPage = lazy(() => import("@/pages/TemplateDetailPage"));

// Services Module Pages

// India Service Registration Pages

// Singapore Pages
const SingaporeHome = lazy(() => import("@/pages/singapore/SingaporeHome"));
const SingaporeWorkspaces = lazy(() => import("@/pages/singapore/SingaporeWorkspaces"));
const SingaporeWorkspacePage = lazy(() => import("@/pages/singapore/SingaporeWorkspacePage"));

// Purpose Pages for Business Registration Types

const DynamicRouter = lazy(() => import("@/components/DynamicRouter"));
const TestPage = lazy(() => import("@/pages/TestPage"));
const OffersPage = lazy(() => import("@/pages/OffersPage"));

const ClerkSignInPage = lazy(() => import("@/pages/ClerkSignInPage"));
const ClerkSignUpPage = lazy(() => import("@/pages/ClerkSignUpPage"));
const OnboardingPage = lazy(() => import("@/pages/OnboardingPage"));
const DashboardPage = lazy(() => import("@/pages/DashboardPage"));

// Growth Pages
const VirtualOfficeComparatorPage = lazy(() => import("@/pages/VirtualOfficeComparatorPage"));
const PurposesPage = lazy(() => import("@/pages/PurposesPage"));
const DynamicVirtualOfficePage = lazy(() => import("@/pages/DynamicVirtualOfficePage"));
const VirtualOfficeForTechStartupsPage = lazy(() => import("@/pages/services/VirtualOfficeForTechStartupsPage"));
const VirtualOfficeForConsultantsPage = lazy(() => import("@/pages/services/VirtualOfficeForConsultantsPage"));
const VirtualOfficeForFreelancersPage = lazy(() => import("@/pages/services/VirtualOfficeForFreelancersPage"));
const VirtualOfficeForEcommercePage = lazy(() => import("@/pages/services/VirtualOfficeForEcommercePage"));
const VirtualOfficeForEventsPage = lazy(() => import("@/pages/services/VirtualOfficeForEventsPage"));
const VirtualOfficeForRenewableEnergyPage = lazy(() => import("@/pages/services/VirtualOfficeForRenewableEnergyPage"));
const VirtualOfficeForHealthcarePage = lazy(() => import("@/pages/services/VirtualOfficeForHealthcarePage"));
const VirtualOfficeForHospitalityPage = lazy(() => import("@/pages/services/VirtualOfficeForHospitalityPage"));
const VirtualOfficeForConstructionPage = lazy(() => import("@/pages/services/VirtualOfficeForConstructionPage"));
const VirtualOfficeForImportExportPage = lazy(() => import("@/pages/services/VirtualOfficeForImportExportPage"));
const VirtualOfficeForFoodBeveragePage = lazy(() => import("@/pages/services/VirtualOfficeForFoodBeveragePage"));
const VirtualOfficeForManufacturingPage = lazy(() => import("@/pages/services/VirtualOfficeForManufacturingPage"));
const VirtualOfficeForCompanyRegistrationPage = lazy(() => import("@/pages/services/VirtualOfficeForCompanyRegistrationPage"));
const VirtualOfficeForGSTRegistrationPage = lazy(() => import("@/pages/services/VirtualOfficeForGSTRegistrationPage"));
const VirtualOfficeForBankAccountFormationPage = lazy(() => import("@/pages/services/VirtualOfficeForBankAccountFormationPage"));
const VirtualOfficeForMSMERegistrationPage = lazy(() => import("@/pages/services/VirtualOfficeForMSMERegistrationPage"));
const VirtualOfficeForLLPRegistrationPage = lazy(() => import("@/pages/services/VirtualOfficeForLLPRegistrationPage"));
const VirtualOfficeForGoogleMyBusinessRegistrationPage = lazy(() => import("@/pages/services/VirtualOfficeForGoogleMyBusinessRegistrationPage"));
const VirtualOfficeForSaaSFoundersPage = lazy(() => import("@/pages/services/VirtualOfficeForSaaSFoundersPage"));
const VirtualOfficeForRemoteCreativeAgencyPage = lazy(() => import("@/pages/services/VirtualOfficeForRemoteCreativeAgencyPage"));
const VirtualOfficeForForeignSMEEntryDeskPage = lazy(() => import("@/pages/services/VirtualOfficeForForeignSMEEntryDeskPage"));
const VirtualOfficeForFinTechStartupPage = lazy(() => import("@/pages/services/VirtualOfficeForFinTechStartupPage"));
const VirtualOfficeForNGOFoundationPage = lazy(() => import("@/pages/services/VirtualOfficeForNGOFoundationPage"));
const VirtualOfficeForRecruitmentProcessOutsourcerPage = lazy(() => import("@/pages/services/VirtualOfficeForRecruitmentProcessOutsourcerPage"));
const VirtualOfficeForSeasonalEventManagementPage = lazy(() => import("@/pages/services/VirtualOfficeForSeasonalEventManagementPage"));
const VirtualOfficeForTradeLicensePage = lazy(() => import("@/pages/services/VirtualOfficeForTradeLicensePage"));
const VirtualOfficeForPartnershipPage = lazy(() => import("@/pages/services/VirtualOfficeForPartnershipPage"));
const VirtualOfficeForOPCPage = lazy(() => import("@/pages/services/VirtualOfficeForOPCPage"));
const VirtualOfficeForLLPPage = lazy(() => import("@/pages/services/VirtualOfficeForLLPPage"));
const VirtualOfficeForPrivateLimitedPage = lazy(() => import("@/pages/services/VirtualOfficeForPrivateLimitedPage"));
const VirtualOfficeForSection8Page = lazy(() => import("@/pages/services/VirtualOfficeForSection8Page"));
const VirtualOfficeForTrustPage = lazy(() => import("@/pages/services/VirtualOfficeForTrustPage"));
const VirtualOfficeForPublicLimitedPage = lazy(() => import("@/pages/services/VirtualOfficeForPublicLimitedPage"));
const VirtualOfficeForProducerCompanyPage = lazy(() => import("@/pages/services/VirtualOfficeForProducerCompanyPage"));
const VirtualOfficeForIndianSubsidiaryPage = lazy(() => import("@/pages/services/VirtualOfficeForIndianSubsidiaryPage"));

// Optimized loading component for lazy-loaded pages
const PageLoader = () => (
  <div className="min-h-screen flex items-center justify-center above-fold">
    <div className="loading-skeleton rounded-full h-8 w-8"></div>
  </div>
);

function App() {
  return (
    <HelmetProvider>
      <QueryClientProvider client={queryClient}>
        <AuthProvider>
          <CookiesProvider>
            <TooltipProvider>
              <SkipNavigation />
              <Toaster />
              <OrganizationStructuredData />
              <DesktopWhatsAppButton />
              <SimplySetupChat />
              <LocationProvider>
                <CountryProvider>
                  <Switch>
                    {/* Home Route */}
                    <Route path="/" component={Home} />

                    {/* Clerk Auth Routes */}
                    <Route path="/sign-in/:rest*">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <ClerkSignInPage />
                        </Suspense>
                      )}
                    </Route>
                    <Route path="/sign-in">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <ClerkSignInPage />
                        </Suspense>
                      )}
                    </Route>
                    <Route path="/sign-up/:rest*">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <ClerkSignUpPage />
                        </Suspense>
                      )}
                    </Route>
                    <Route path="/sign-up">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <ClerkSignUpPage />
                        </Suspense>
                      )}
                    </Route>
                    <Route path="/onboarding">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <OnboardingPage />
                        </Suspense>
                      )}
                    </Route>
                    <Route path="/dashboard">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <DashboardPage />
                        </Suspense>
                      )}
                    </Route>
                    
                    {/* Singapore Routes */}
                    <Route path="/sg">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <SingaporeHome />
                        </Suspense>
                      )}
                    </Route>
                    <Route path="/sg/virtual-office">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <SingaporeWorkspaces />
                        </Suspense>
                      )}
                    </Route>
                    <Route path="/sg/virtual-office/:slug">
                      {(params) => (
                        <Suspense fallback={<PageLoader />}>
                          <SingaporeWorkspacePage />
                        </Suspense>
                      )}
                    </Route>
                    <Route path="/sg/services/:slug">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <ServiceDetailPage />
                        </Suspense>
                      )}
                    </Route>
                    <Route path="/sg/services">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <ServicesPage />
                        </Suspense>
                      )}
                    </Route>
                    
                    {/* Admin Routes */}
                    <Route path="/admin/auth">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <AuthPage />
                        </Suspense>
                      )}
                    </Route>
                    
                    {/* Comply Routes - Separate Authentication System */}
                    <Route path="/comply" nest>
                      <ComplyAuthProvider>
                        <Route path="/test">
                          {() => (
                            <Suspense fallback={<PageLoader />}>
                              <ComplyTest />
                            </Suspense>
                          )}
                        </Route>
                        <Route path="/dashboard">
                          {() => (
                            <Suspense fallback={<PageLoader />}>
                              <ComplyDashboard />
                            </Suspense>
                          )}
                        </Route>
                        <Route path="/auth">
                          {() => (
                            <Suspense fallback={<PageLoader />}>
                              <ComplyAuth />
                            </Suspense>
                          )}
                        </Route>
                        <Route path="/">
                          {() => (
                            <Suspense fallback={<PageLoader />}>
                              <ComplyAuth />
                            </Suspense>
                          )}
                        </Route>
                      </ComplyAuthProvider>
                    </Route>
                    
                    {/* Customer Portal Routes */}
                    <Route path="/customer" nest>
                      <ComplyAuthProvider>
                        <Route path="/auth">
                          {() => (
                            <Suspense fallback={<PageLoader />}>
                              <CustomerAuth />
                            </Suspense>
                          )}
                        </Route>
                        <Route path="/onboarding">
                          {() => (
                            <Suspense fallback={<PageLoader />}>
                              <CustomerOnboarding />
                            </Suspense>
                          )}
                        </Route>
                        <Route path="/dashboard">
                          {() => (
                            <Suspense fallback={<PageLoader />}>
                              <CustomerDashboard />
                            </Suspense>
                          )}
                        </Route>
                        <Route path="/">
                          {() => (
                            <Suspense fallback={<PageLoader />}>
                              <CustomerAuth />
                            </Suspense>
                          )}
                        </Route>
                      </ComplyAuthProvider>
                    </Route>
                    
                    <ProtectedRoute 
                      path="/admin" 
                      component={() => (
                        <Suspense fallback={<PageLoader />}>
                          <Admin />
                        </Suspense>
                      )}
                    />
                    <ProtectedRoute 
                      path="/admin/docukit" 
                      component={() => (
                        <Suspense fallback={<PageLoader />}>
                          <DocuKitAdmin />
                        </Suspense>
                      )}
                    />
                    <ProtectedRoute 
                      path="/admin/menu" 
                      component={() => (
                        <Suspense fallback={<PageLoader />}>
                          <MenuAdmin />
                        </Suspense>
                      )}
                    />
                    <ProtectedRoute 
                      path="/admin/simplysetup" 
                      component={() => (
                        <Suspense fallback={<PageLoader />}>
                          <SimplySetupLeadsAdmin />
                        </Suspense>
                      )}
                    />
                    
                    {/* Public Pages Routes */}
                    <Route path="/pages/:slug">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <PublicPage />
                        </Suspense>
                      )}
                    </Route>

                    {/* Blog Routes - must come before the dynamic location routes */}
                    <Route path="/blog/tags/:tag">
                      {params => (
                        <Suspense fallback={<PageLoader />}>
                          <BlogTagPage />
                        </Suspense>
                      )}
                    </Route>
                    <Route path="/blog/:slug">
                      {params => (
                        <Suspense fallback={<PageLoader />}>
                          <BlogPostPage />
                        </Suspense>
                      )}
                    </Route>
                    <Route path="/blog">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <BlogPage />
                        </Suspense>
                      )}
                    </Route>
                    
                    {/* Services Module Routes */}
                
                    {/* Virtual Office Routes - Base route */}
                    <Route path="/virtual-office">
                      {() => (
                        <Suspense fallback={<PageLoader />}>
                          <WorkspacesPage />
                        </Suspense>
                      )}
                    </Route>
                
                {/* City with area route - must come before general city route */}
                <Route path="/virtual-office/:city/:area">
                  {params => {
                    // Skip if this matches a predefined route to avoid conflicts
                    if (["blog", "admin", "workspaces", "about", "contact", "thank-you-1", "pages", "privacy-policy", "terms-of-service", "sitemap", "usecase", "sign-in", "sign-up", "dashboard", "onboarding"].includes(params.city)) {
                      return <NotFound />;
                    }
                    
                    console.log("Loading city with area:", params.city, params.area);
                    return (
                      <Suspense fallback={<PageLoader />}>
                        <WorkspacesPage citySlug={params.city} areaSlug={params.area} />
                      </Suspense>
                    );
                  }}
                </Route>

                {/* Individual workspaces with virtual-office prefix */}
                <Route path="/virtual-office/:slug">
                  {params => {
                    // Skip if this matches a predefined route to avoid conflicts
                    if (["blog", "admin", "workspaces", "about", "contact", "thank-you-1", "pages", "privacy-policy", "terms-of-service", "sitemap", "usecase", "sg", "sign-in", "sign-up", "dashboard", "onboarding"].includes(params.slug)) {
                      return <NotFound />;
                    }
                    
                    // Check if slug ends with known purposes (for dynamic pages)
                    // Dynamic pages have format: area-name-purpose (e.g., "bandra-gst-registration", "nariman-point-company-registration")
                    const dynamicPagePatterns = [
                      'gst-registration',
                      'company-registration'
                    ];
                    
                    const isDynamicPage = dynamicPagePatterns.some(pattern => params.slug.endsWith(pattern));
                    
                    if (isDynamicPage) {
                      console.log("Loading as dynamic page:", params.slug);
                      return (
                        <Suspense fallback={<PageLoader />}>
                          <DynamicVirtualOfficePage />
                        </Suspense>
                      );
                    }
                    
                    // Check for workspace slugs with hyphenated names like "awfis-fun-republic"
                    // If slug contains a hyphen, treat it as a workspace
                    if (params.slug.includes('-')) {
                      console.log("Attempting to load as workspace:", params.slug);
                      return (
                        <Suspense fallback={<PageLoader />}>
                          <WorkspacePage />
                        </Suspense>
                      );
                    }
                    
                    // Otherwise, treat it as a city
                    console.log("Loading as city:", params.slug);
                    return (
                      <Suspense fallback={<PageLoader />}>
                        <WorkspacesPage citySlug={params.slug} />
                      </Suspense>
                    );
                  }}
                </Route>
                
                {/* Individual workspaces with virtual-office-space prefix (for backward compatibility) */}
                <Route path="/virtual-office-space/:slug">
                  {params => (
                    <Suspense fallback={<PageLoader />}>
                      <WorkspacePage />
                    </Suspense>
                  )}
                </Route>
                
                {/* City-specific Virtual Office Routes - Legacy format (kept for backward compatibility) */}
                <Route path="/:city/virtual-office">
                  {(params) => {
                    // Skip if this is an admin or other predefined route to avoid conflicts
                    if (["blog", "admin", "workspaces", "virtual-office", "about", "contact", "thank-you-1", "pages", "privacy-policy", "terms-of-service", "sitemap", "usecase", "docukit", "sg", "sign-in", "sign-up", "dashboard", "onboarding"].includes(params.city)) {
                      return <NotFound />;
                    }
                    return (
                      <Suspense fallback={<PageLoader />}>
                        <WorkspacesPage citySlug={params.city} />
                      </Suspense>
                    );
                  }}
                </Route>
                
                {/* Workspace Routes - Legacy routes kept for backward compatibility and SEO preservation */}
                <Route path="/workspaces/:slug">
                  {params => (
                    <Suspense fallback={<PageLoader />}>
                      <WorkspacePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/workspaces">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <WorkspacesPage />
                    </Suspense>
                  )}
                </Route>
                
                {/* Public Routes */}
                <Route path="/about">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <AboutPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/contact">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <ContactPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/offers">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <OffersPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-comparison">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeComparatorPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/thank-you-1">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <ThankYouPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/pages/thank-you-1">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <ThankYouPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/payment-success">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <PaymentSuccessPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/test">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <TestPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/companies">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <CompanySearchPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/companies/:slug">
                  {(params) => (
                    <Suspense fallback={<PageLoader />}>
                      <CompanyProfilePage />
                    </Suspense>
                  )}
                </Route>
                {/* Legal Pages */}
                <Route path="/privacy-policy">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <PrivacyPolicyPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/terms-of-service">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <TermsOfServicePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/sitemap">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <SitemapPage />
                    </Suspense>
                  )}
                </Route>
                {/* Partnership page */}
                <Route path="/partnership/awfis">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <AwfisPartnership />
                    </Suspense>
                  )}
                </Route>
                {/* Purposes Page */}
                <Route path="/purposes">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <PurposesPage />
                    </Suspense>
                  )}
                </Route>
                {/* Use Case Pages */}
                <Route path="/usecase">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <ServicesIndexPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-tech-startups">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForTechStartupsPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-consultants">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForConsultantsPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-freelancers">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForFreelancersPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-ecommerce">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForEcommercePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-events">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForEventsPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-renewable-energy">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForRenewableEnergyPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-healthcare">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForHealthcarePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-hospitality">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForHospitalityPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-construction">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForConstructionPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-import-export">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForImportExportPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-food-beverage">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForFoodBeveragePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-manufacturing">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForManufacturingPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-saas-founders">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForSaaSFoundersPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-remote-creative-agency">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForRemoteCreativeAgencyPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-foreign-sme-entry-desk">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForForeignSMEEntryDeskPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-fintech-startup">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForFinTechStartupPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-ngo-foundation">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForNGOFoundationPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-recruitment-process-outsourcer">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForRecruitmentProcessOutsourcerPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/usecase/virtual-office-for-seasonal-event-management">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForSeasonalEventManagementPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-company-registration">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForCompanyRegistrationPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-gst-registration">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForGSTRegistrationPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-bank-account-formation">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForBankAccountFormationPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-msme-registration">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForMSMERegistrationPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-llp-registration">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForLLPRegistrationPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-google-my-business-registration">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForGoogleMyBusinessRegistrationPage />
                    </Suspense>
                  )}
                </Route>
                
                {/* India Service Registration Pages - Direct service pages */}
                
                {/* New Purpose Pages for Business Registration Types */}
                <Route path="/purpose/virtual-office-for-trade-license">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForTradeLicensePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-partnership">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForPartnershipPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-opc">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForOPCPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-llp">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForLLPPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-private-limited">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForPrivateLimitedPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-section-8">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForSection8Page />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-trust">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForTrustPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-public-limited">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForPublicLimitedPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-producer-company">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForProducerCompanyPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/purpose/virtual-office-for-indian-subsidiary">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeForIndianSubsidiaryPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/benefits">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeBenefitsPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/affordable-plans">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <AffordablePlansPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/remote-work-solutions">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <RemoteWorkSolutionsPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/startups">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <StartupsPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/enterprise-solutions">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <EnterpriseSolutionsPage />
                    </Suspense>
                  )}
                </Route>
                
                {/* Calculator Routes */}
                <Route path="/calculators">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <CalculatorsPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/calculators/startup-cost">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <StartupCostCalculatorPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/calculators/roi">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeROICalculatorPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/calculators/savings">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <BusinessSavingsCalculatorPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/company-search">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <CompanySearchPage />
                    </Suspense>
                  )}
                </Route>

                {/* New Use Case Pages */}
                <Route path="/tech-startups">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <TechStartupsPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/freelancers">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <FreelancersPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/ecommerce">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <EcommercePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/it-companies">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <ITCompaniesPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/gst-registration">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <GSTRegistrationPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/gst-number-search">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <GSTNumberSearchPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/gst-number-search/:slug">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <GSTNumberSearchPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/gst-contact-thank-you">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <GSTContactThankYouPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/gst-return-checker">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <GSTReturnCheckerPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/gst-return-checker/:slug">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <GSTReturnCheckerPage />
                    </Suspense>
                  )}
                </Route>
                
                {/* Growth Pages */}
                
                <Route path="/business-registration">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <BusinessRegistrationPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/refund-policy">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <RefundPolicyPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/docukit">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <DocuKitPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/docukit/hr">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <DocuKitCategoryPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/docukit/finance">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <DocuKitCategoryPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/docukit/legal">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <DocuKitCategoryPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/docukit/operations">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <DocuKitCategoryPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/docukit/marketing">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <DocuKitCategoryPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/docukit/:categorySlug/:templateSlug">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <TemplateDetailPage />
                    </Suspense>
                  )}
                </Route>
                
                {/* Company Registration Landing Page */}
                <Route path="/company-registration-landing">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <CompanyRegistrationLandingPage />
                    </Suspense>
                  )}
                </Route>
                
                {/* Virtual Office Company Registration Page */}
                <Route path="/virtual-office-company-registration">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <VirtualOfficeCompanyRegistrationPage />
                    </Suspense>
                  )}
                </Route>
                
                {/* State-specific Virtual Office Company Registration Pages */}
                <Route path="/virtual-office-company-registration-all-states">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <AllStatesPage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-company-registration/:state">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <StateVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                
                {/* City-specific Virtual Office Company Registration Pages */}
                <Route path="/virtual-office-company-registration-mumbai">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <MumbaiVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-company-registration-delhi">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <DelhiVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-company-registration-bangalore">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <BangaloreVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-company-registration-hyderabad">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <HyderabadVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-company-registration-ahmedabad">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <AhmedabadVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-company-registration-chennai">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <ChennaiVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-company-registration-kolkata">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <KolkataVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-company-registration-pune">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <PuneVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-company-registration-jaipur">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <JaipurVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-company-registration-surat">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <SuratVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-company-registration-nagpur">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <NagpurVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                <Route path="/virtual-office-company-registration-indore">
                  {() => (
                    <Suspense fallback={<PageLoader />}>
                      <IndoreVirtualOfficePage />
                    </Suspense>
                  )}
                </Route>
                
                {/* Area pages route - New format: virtual-office/location/area */}
                <Route path="/virtual-office/:location/:area">
                  {params => {
                    // Skip if path starts with predefined routes to avoid conflict
                    if (["blog", "admin", "workspaces", "about", "contact", "thank-you-1", "pages", "privacy-policy", "terms-of-service", "sitemap", "usecase", "docukit", "sign-in", "sign-up", "dashboard", "onboarding", "services", "growth"].includes(params.location)) return <NotFound />;
                    return (
                      <Suspense fallback={<PageLoader />}>
                        <LocationPage areaSlug={params.area} />
                      </Suspense>
                    );
                  }}
                </Route>
                
                {/* Area pages route - Legacy format (kept for backward compatibility) */}
                <Route path="/:location/:area">
                  {params => {
                    // Skip if path starts with predefined routes to avoid conflict
                    if (["blog", "admin", "workspaces", "virtual-office", "about", "contact", "thank-you-1", "pages", "privacy-policy", "terms-of-service", "sitemap", "usecase", "docukit", "sign-in", "sign-up", "dashboard", "onboarding", "services", "growth"].includes(params.location)) return <NotFound />;
                    return (
                      <Suspense fallback={<PageLoader />}>
                        <LocationPage areaSlug={params.area} />
                      </Suspense>
                    );
                  }}
                </Route>
                {/* Workspace slug check before location routes */}
                <Route path="/:slug">
                  {params => {
                    // Skip if path starts with predefined routes to avoid conflict
                    if (["blog", "admin", "workspaces", "virtual-office", "about", "contact", "thank-you-1", "pages", "privacy-policy", "terms-of-service", "sitemap", "usecase", "docukit", "sign-in", "sign-up", "dashboard", "onboarding", "services", "growth"].includes(params.slug)) return <NotFound />;
                    
                    // We need to check if this is a workspace slug or a location slug
                    return (
                      <Suspense fallback={<PageLoader />}>
                        <DynamicRouter slug={params.slug} />
                      </Suspense>
                    );
                  }}
                </Route>
                
                {/* Fallback */}
                <Route component={NotFound} />
              </Switch>
                </CountryProvider>
              </LocationProvider>
            </TooltipProvider>
          </CookiesProvider>
        </AuthProvider>
      </QueryClientProvider>
    </HelmetProvider>
  );
}

export default App;
