Files
techzaa-frontend/src/App.tsx
T

50 lines
1.6 KiB
TypeScript
Raw Normal View History

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;