import { Toaster } from "@/components/ui/toaster";
import { Toaster as Sonner } from "@/components/ui/sonner";
import { TooltipProvider } from "@/components/ui/tooltip";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
import { useLayoutEffect } from "react";

const AuditFlashRedirect = () => {
  useLayoutEffect(() => {
    [['prerender-status-code', '301'], ['prerender-header', 'Location: https://quotative.com/searchative']].forEach(([name, content]) => {
      const m = document.createElement('meta');
      m.setAttribute('name', name);
      m.setAttribute('content', content);
      m.setAttribute('data-redirect-meta', 'true');
      document.head.appendChild(m);
    });
  }, []);
  return <Navigate to="/searchative" replace />;
};
import { LanguageProvider } from "@/contexts/LanguageContext";
import { ScrollToTop } from "@/components/ScrollToTop";
import { CookieBanner } from "@/components/CookieBanner";
import { lazy, Suspense, useEffect } from "react";
import { useCalendlyTracking } from "@/hooks/useCalendlyTracking";
import LandingV3 from "./pages/LandingV3";

// Lazy load secondary pages
const APropos = lazy(() => import("./pages/APropos"));
const MentionsLegales = lazy(() => import("./pages/MentionsLegales"));
const PolitiqueConfidentialite = lazy(() => import("./pages/PolitiqueConfidentialite"));
const Blog = lazy(() => import("./pages/Blog"));
const BlogArticle = lazy(() => import("./pages/BlogArticle"));
const AuditFlash = lazy(() => import("./pages/AuditFlash"));
const PourquoiLeGeo = lazy(() => import("./pages/PourquoiLeGeo"));
const Methodologie = lazy(() => import("./pages/Methodologie"));
const OptimisationChatgpt = lazy(() => import("./pages/OptimisationChatgpt"));
const OptimisationPerplexity = lazy(() => import("./pages/OptimisationPerplexity"));
const OptimisationCopilot = lazy(() => import("./pages/OptimisationCopilot"));
const OptimisationGemini = lazy(() => import("./pages/OptimisationGemini"));
const OptimisationClaude = lazy(() => import("./pages/OptimisationClaude"));
const Pricing = lazy(() => import("./pages/Pricing"));
const Contact = lazy(() => import("./pages/Contact"));
const NotFound = lazy(() => import("./pages/NotFound"));

const queryClient = new QueryClient();

// Loading fallback component
const LoadingFallback = () => (
  <div style={{ minHeight: '100vh', backgroundColor: '#F6F4F0' }} />
);

// Main App Component
const App = () => {
  useCalendlyTracking();
  return (
  <QueryClientProvider client={queryClient}>
    <LanguageProvider>
      <TooltipProvider>
        <Toaster />
        <Sonner />
        <BrowserRouter>
          <ScrollToTop />
          <CookieBanner />
          <Suspense fallback={<LoadingFallback />}>
            <Routes>
              {/* Homepage = LandingV3 */}
              <Route path="/" element={<LandingV3 />} />
              
              {/* Redirects, anciennes pages vers / */}
              <Route path="/v3" element={<Navigate to="/" replace />} />
              <Route path="/audit-gratuit" element={<Navigate to="/searchative" replace />} />
              <Route path="/audit-flash" element={<AuditFlashRedirect />} />
              <Route path="/audit-flash/loading" element={<Navigate to="/searchative" replace />} />
              <Route path="/audit-flash/results" element={<Navigate to="/searchative" replace />} />
              <Route path="/services" element={<Navigate to="/" replace />} />
              <Route path="/services/llmo-geo" element={<Navigate to="/" replace />} />
              <Route path="/services/sites-web" element={<Navigate to="/" replace />} />
              <Route path="/services/automatisations" element={<Navigate to="/" replace />} />
              <Route path="/services/agents-ia" element={<Navigate to="/" replace />} />
              <Route path="/contact" element={<Contact />} />
              <Route path="/demande" element={<Navigate to="/" replace />} />
              <Route path="/merci" element={<Navigate to="/" replace />} />
              <Route path="/etudes-de-cas" element={<Navigate to="/" replace />} />
              <Route path="/etudes-de-cas/*" element={<Navigate to="/" replace />} />
              
              {/* Pages actives */}
              <Route path="/a-propos" element={<APropos />} />
              <Route path="/mentions-legales" element={<MentionsLegales />} />
              <Route path="/politique-confidentialite" element={<PolitiqueConfidentialite />} />
              <Route path="/blog" element={<Blog />} />
              <Route path="/blog/:slug" element={<BlogArticle />} />
              <Route path="/pourquoi-le-geo" element={<PourquoiLeGeo />} />
              <Route path="/methodologie" element={<Methodologie />} />
              <Route path="/optimisation-chatgpt" element={<OptimisationChatgpt />} />
              <Route path="/optimisation-perplexity" element={<OptimisationPerplexity />} />
              <Route path="/optimisation-copilot" element={<OptimisationCopilot />} />
              <Route path="/optimisation-gemini" element={<OptimisationGemini />} />
              <Route path="/optimisation-claude" element={<OptimisationClaude />} />
              <Route path="/searchative" element={<AuditFlash />} />
              <Route path="/searchative/loading" element={<Navigate to="/searchative" replace />} />
              <Route path="/searchative/results" element={<Navigate to="/searchative" replace />} />
              <Route path="/pricing" element={<Pricing />} />
              
              {/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
              <Route path="*" element={<NotFound />} />
            </Routes>
          </Suspense>
        </BrowserRouter>
      </TooltipProvider>
    </LanguageProvider>
  </QueryClientProvider>
  );
};

export default App;
