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 } from "react-router-dom";
import { AuthProvider } from "@/contexts/AuthContext";
import Index from "./pages/Index";
import Dashboard from "./pages/Dashboard";
import SavedSearches from "./pages/SavedSearches";
import AddContent from "./pages/AddContent";
import ContentForm from "./pages/ContentForm";
import Auth from "./pages/Auth";
import AuthCallback from "./pages/AuthCallback";
import ResetPassword from "./pages/ResetPassword";
import ProfileCompletion from "./pages/ProfileCompletion";
import AccountSettings from "./pages/AccountSettings";
import ProfileSearch from "./pages/ProfileSearch";
import CarePaths from "./pages/CarePaths";
import CarePathForm from "./pages/CarePathForm";
import CarePathCanvas from "./pages/CarePathCanvas";
import SearchResults from "./pages/SearchResults";
import ContentDetails from "./pages/ContentDetails";
import Messages from "./pages/Messages";
import MockupPreview from "./pages/MockupPreview";
import Newsfeed from "./pages/Newsfeed";
import IcdImport from "./pages/IcdImport";
import DemoDataImport from "./pages/DemoDataImport";
import Admin from "./pages/Admin";
import Professionals from "./pages/Professionals";
import ProfileDetails from "./pages/ProfileDetails";
import Terms from "./pages/Terms";
import Privacy from "./pages/Privacy";
import Contact from "./pages/Contact";
import Organizations from "./pages/Organizations";
import OrganizationDetails from "./pages/OrganizationDetails";
import DiagnosisHub from "./pages/DiagnosisHub";
import DiagnosesList from "./pages/DiagnosesList";
import CarePathSEO from "./pages/CarePathSEO";
import NotFound from "./pages/NotFound";
import { ScrollToTop } from "./components/ScrollToTop";

const queryClient = new QueryClient();

const App = () => (
  <QueryClientProvider client={queryClient}>
    <AuthProvider>
      <TooltipProvider>
        <Toaster />
        <Sonner />
        <BrowserRouter>
          <ScrollToTop />
          <Routes>
            <Route path="/" element={<Index />} />
            <Route path="/dashboard" element={<Dashboard />} />
            <Route path="/saved-searches" element={<SavedSearches />} />
            <Route path="/add-content" element={<AddContent />} />
            <Route path="/content-form/:category" element={<ContentForm />} />
            <Route path="/care-paths" element={<CarePaths />} />
            <Route path="/care-paths/new" element={<CarePathForm />} />
            <Route path="/care-paths/:idOrSlug" element={<CarePathCanvas />} />
            <Route path="/search-results" element={<SearchResults />} />
            <Route path="/content/:id" element={<ContentDetails />} />
            <Route path="/messages" element={<Messages />} />
            <Route path="/newsfeed" element={<Newsfeed />} />
            <Route path="/mockup" element={<MockupPreview />} />
            <Route path="/icd-import" element={<IcdImport />} />
            <Route path="/demo-import" element={<DemoDataImport />} />
            <Route path="/admin" element={<Admin />} />
            <Route path="/professionals" element={<Professionals />} />
            <Route path="/profiles/:idOrSlug" element={<ProfileDetails />} />
            <Route path="/profiles/id/:idOrSlug" element={<ProfileDetails />} />
            <Route path="/terms" element={<Terms />} />
            <Route path="/privacy" element={<Privacy />} />
            <Route path="/contact" element={<Contact />} />
            <Route path="/organizations" element={<Organizations />} />
            <Route path="/organizations/:id" element={<OrganizationDetails />} />
            <Route path="/diagnoses" element={<DiagnosesList />} />
            <Route path="/diagnoses/:slug" element={<DiagnosisHub />} />
            <Route path="/carepaths/:slug" element={<CarePathSEO />} />
            <Route path="/auth" element={<Auth />} />
            <Route path="/auth/callback" element={<AuthCallback />} />
            <Route path="/auth/reset-password" element={<ResetPassword />} />
            <Route path="/profile-completion" element={<ProfileCompletion />} />
            <Route path="/account-settings" element={<AccountSettings />} />
            <Route path="/profile-search" element={<ProfileSearch />} />
            {/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
            <Route path="*" element={<NotFound />} />
          </Routes>
        </BrowserRouter>
      </TooltipProvider>
    </AuthProvider>
  </QueryClientProvider>
);

export default App;
