2026-03-30 20:20:21 +06:00
|
|
|
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, useLocation } from "react-router-dom";
|
|
|
|
|
import { ThemeProvider } from "@/contexts/ThemeContext";
|
|
|
|
|
import { AnimatePresence } from "framer-motion";
|
|
|
|
|
import Index from "./pages/Index";
|
|
|
|
|
import Projects from "./pages/Projects";
|
|
|
|
|
import ProjectDetails from "./pages/ProjectDetails";
|
|
|
|
|
import Blog from "./pages/Blog";
|
|
|
|
|
import BlogArticle from "./pages/BlogArticle";
|
|
|
|
|
import NotFound from "./pages/NotFound";
|
2026-04-04 22:49:48 +06:00
|
|
|
import { QueryProvider } from "./provider/QueryProvider";
|
2026-03-30 20:20:21 +06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
function AnimatedRoutes() {
|
|
|
|
|
const location = useLocation();
|
2026-04-04 22:49:48 +06:00
|
|
|
|
2026-03-30 20:20:21 +06:00
|
|
|
return (
|
|
|
|
|
<AnimatePresence mode="wait">
|
|
|
|
|
<Routes location={location} key={location.pathname}>
|
|
|
|
|
<Route path="/" element={<Index />} />
|
|
|
|
|
<Route path="/projects" element={<Projects />} />
|
|
|
|
|
<Route path="/projects/:slug" element={<ProjectDetails />} />
|
|
|
|
|
<Route path="/blog" element={<Blog />} />
|
|
|
|
|
<Route path="/blog/:slug" element={<BlogArticle />} />
|
|
|
|
|
{/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
|
|
|
|
|
<Route path="*" element={<NotFound />} />
|
|
|
|
|
</Routes>
|
|
|
|
|
</AnimatePresence>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const App = () => (
|
2026-04-04 22:49:48 +06:00
|
|
|
<QueryProvider>
|
2026-03-30 20:20:21 +06:00
|
|
|
<ThemeProvider>
|
|
|
|
|
<TooltipProvider>
|
|
|
|
|
<Toaster />
|
|
|
|
|
<Sonner />
|
|
|
|
|
<BrowserRouter>
|
|
|
|
|
<AnimatedRoutes />
|
|
|
|
|
</BrowserRouter>
|
|
|
|
|
</TooltipProvider>
|
|
|
|
|
</ThemeProvider>
|
2026-04-04 22:49:48 +06:00
|
|
|
</QueryProvider>
|
2026-03-30 20:20:21 +06:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
export default App;
|