
// Blog system implementation
import React from "react";
import { Toaster } from "@/components/ui/toaster";
import { Toaster as Sonner } from "@/components/ui/sonner";
import CookieConsent from "@/components/CookieConsent";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
import { HelmetProvider } from "react-helmet-async";
import Index from "./pages/Index";
import NotFound from "./pages/NotFound";
import PrivacyPolicy from "./pages/PrivacyPolicy";
import TermsOfService from "./pages/TermsOfService";
import CookiePolicy from "./pages/CookiePolicy";
import AcceptableUsePolicy from "./pages/AcceptableUsePolicy";
import TermsOfUse from "./pages/TermsOfUse";
import KnowledgeAssessment from "./pages/KnowledgeAssessment";
import AIKnowledgeAgent from "./pages/AIKnowledgeAgent";
import Blog from "./pages/Blog";
import BlogArticle from "./pages/BlogArticle";
import AdminBlogPosts from "./pages/AdminBlogPosts";
import AdminBlogEditor from "./pages/AdminBlogEditor";
import BlogPreview from "./pages/BlogPreview";
import SEOReport from "./pages/SEOReport";
// import EmailGuard from "./pages/EmailGuard"; // Temporarily hidden — restore before launch
import Auth from "./pages/Auth";
import NoindexRoutes from "./seo/NoindexRoutes";
import { AuthProvider } from "./hooks/useAuth";
import AdminGuard from "./components/AdminGuard";
import { ScrollToTop } from "./components/ScrollToTop";
import { PageTransition } from "./components/PageTransition";

const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 5 * 60 * 1000, // 5 minutes
      gcTime: 10 * 60 * 1000, // 10 minutes (previously cacheTime)
      retry: 1,
      refetchOnWindowFocus: false,
    },
  },
});

const App = () => (
  <HelmetProvider>
    <QueryClientProvider client={queryClient}>
      <AuthProvider>
        <BrowserRouter>
          <ScrollToTop />
          <PageTransition>
            <Routes>
              <Route path="/" element={<Index />} />
              <Route path="/privacy-policy" element={<PrivacyPolicy />} />
              <Route path="/terms-of-service" element={<TermsOfService />} />
              <Route path="/cookie-policy" element={<CookiePolicy />} />
              <Route path="/acceptable-use-policy" element={<AcceptableUsePolicy />} />
              <Route path="/terms-of-use" element={<TermsOfUse />} />
              <Route path="/chat-with-agent" element={<KnowledgeAssessment />} />
              <Route path="/knowledge-assessment" element={<Navigate to="/chat-with-agent" replace />} />
              <Route path="/ai-knowledge-agent" element={<AIKnowledgeAgent />} />
              <Route path="/blog" element={<Blog />} />
              <Route path="/blog/:slug" element={<BlogArticle />} />
              <Route path="/auth" element={<Auth />} />
              <Route path="/admin/posts" element={<AdminGuard><AdminBlogPosts /></AdminGuard>} />
              <Route path="/admin/posts/new" element={<AdminGuard><AdminBlogEditor /></AdminGuard>} />
              <Route path="/admin/posts/:id/edit" element={<AdminGuard><AdminBlogEditor /></AdminGuard>} />
              <Route path="/preview/:slug" element={<BlogPreview />} />
              <Route path="/seo-report" element={<SEOReport />} />
              {/* <Route path="/email-guard" element={<EmailGuard />} /> */}{/* Temporarily hidden — restore before launch */}
              {/* Legacy redirects: pricing + WordPress/Elementor leftovers all bounce to home */}
              <Route path="/pricing" element={<Navigate to="/" replace />} />
              <Route path="/elementor-*" element={<Navigate to="/" replace />} />
              <Route path="/forum/*" element={<Navigate to="/" replace />} />
              <Route path="/portfolio/*" element={<Navigate to="/" replace />} />
              <Route path="*" element={<Navigate to="/" replace />} />
            </Routes>
          </PageTransition>
          <NoindexRoutes />
          <Toaster />
          <Sonner />
          <CookieConsent />
        </BrowserRouter>
      </AuthProvider>
    </QueryClientProvider>
  </HelmetProvider>
);

export default App;
