D360-Frontend/src/routes/index.tsx
2026-01-15 14:25:07 +05:30

40 lines
1.5 KiB
TypeScript

import { lazy, Suspense } from 'react';
import { Routes, Route } from 'react-router-dom';
import { LoadingSpinner } from '@/components/common/LoadingSpinner';
// Lazy load all page components for code splitting
const Login = lazy(() => import('@/pages/Login'));
const Dashboard = lazy(() => import('@/pages/Dashboard'));
const DealerProfile = lazy(() => import('@/pages/DealerProfile'));
const ScoreCard = lazy(() => import('@/pages/ScoreCard'));
const NotFound = lazy(() => import('@/components/common/NotFound'));
// Suspense fallback component
const PageLoader = () => (
<div className="min-h-screen bg-[#E8F5E9]/30 backdrop-blur-sm flex items-center justify-center font-poppins">
<div className="flex flex-col items-center gap-4">
<LoadingSpinner size="lg" label="Loading Dealer 360..." />
<div className="text-[10px] uppercase tracking-[0.2em] text-muted-foreground/60 font-semibold">
Secure Credit Gateway
</div>
</div>
</div>
);
export const AppRoutes = () => {
return (
<Suspense fallback={<PageLoader />}>
<Routes>
<Route path="/login" element={<Login />} />
<Route path="/" element={<Dashboard />} />
<Route path="/dealer/:id" element={<DealerProfile />} />
<Route path="/dealer/:id/scorecard" element={<ScoreCard />} />
{/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
<Route path="*" element={<NotFound />} />
</Routes>
</Suspense>
);
};
export default AppRoutes;