// src/routes/AppRoutes.tsx
import React, { type JSX } from 'react';
import { BrowserRouter, Routes, Route, Navigate, Outlet } from 'react-router-dom';
import LoginPage from '../pages/LoginPage';
import HomePage from '../pages/HomePage';
import { useAuth } from '../contexts/AuthContext';
import MainLayout from '../layouts/MainLayout';
import { Typography } from '@mui/material';
// Distribución
import DistribucionIndexPage from '../pages/Distribucion/DistribucionIndexPage';
import ESCanillasPage from '../pages/Distribucion/ESCanillasPage';
import ControlDevolucionesPage from '../pages/Distribucion/ControlDevolucionesPage';
import ESDistribuidoresPage from '../pages/Distribucion/ESDistribuidoresPage';
import SalidasOtrosDestinosPage from '../pages/Distribucion/SalidasOtrosDestinosPage';
import CanillasPage from '../pages/Distribucion/CanillasPage';
import DistribuidoresPage from '../pages/Distribucion/DistribuidoresPage';
import PublicacionesPage from '../pages/Distribucion/PublicacionesPage';
import OtrosDestinosPage from '../pages/Distribucion/OtrosDestinosPage';
import ZonasPage from '../pages/Distribucion/ZonasPage';
import EmpresasPage from '../pages/Distribucion/EmpresasPage';
// Contables
import ContablesIndexPage from '../pages/Contables/ContablesIndexPage';
import GestionarTiposPagoPage from '../pages/Contables/GestionarTiposPagoPage'; // Asumiendo que lo moviste aquí
// --- ProtectedRoute y PublicRoute SIN CAMBIOS ---
const ProtectedRoute: React.FC<{ children: JSX.Element }> = ({ children }) => {
const { isAuthenticated, isLoading } = useAuth();
// console.log("ProtectedRoute Check:", { path: window.location.pathname, isAuthenticated, isLoading });
if (isLoading) return null;
if (!isAuthenticated) {
// console.log("ProtectedRoute: Not authenticated, redirecting to /login");
return ;
}
// console.log("ProtectedRoute: Authenticated, rendering children");
return children;
};
const PublicRoute: React.FC<{ children: JSX.Element }> = ({ children }) => {
const { isAuthenticated, isLoading } = useAuth();
// console.log("PublicRoute Check:", { path: window.location.pathname, isAuthenticated, isLoading });
if (isLoading) return null;
if (isAuthenticated) {
// console.log("PublicRoute: Authenticated, redirecting to /");
return ;
}
// console.log("PublicRoute: Not authenticated, rendering children");
return children;
};
// --- Fin Protected/Public ---
const MainLayoutWrapper: React.FC = () => (
);
// Placeholder simple
const PlaceholderPage: React.FC<{ moduleName: string }> = ({ moduleName }) => (
Página Principal del Módulo: {moduleName}
);
const AppRoutes = () => {
return (
{/* Un solo de nivel superior */}
} />
{/* Rutas Protegidas que usan el MainLayout */}
}
>
{/* Rutas hijas que se renderizarán en el Outlet de MainLayoutWrapper */}
} /> {/* Para la ruta exacta "/" */}
{/* Módulo de Distribución (anidado) */}
}>
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
{/* Módulo Contable (anidado) */}
}>
} />
} />
{/* Futuras sub-rutas de contables aquí */}
{/* Otros Módulos Principales (estos son "finales", no tienen más hijos) */}
} />
} />
} />
{/* } /> */}
{/* Ruta catch-all DENTRO del layout protegido */}
} />
{/* Cierre de la ruta padre "/" */}
{/* Podrías tener un catch-all global aquí si una ruta no coincide EN ABSOLUTO,
pero el path="*" dentro de la ruta "/" ya debería manejar la mayoría de los casos
después de un login exitoso.
Si un usuario no autenticado intenta una ruta inválida, ProtectedRoute lo manda a /login.
*/}
{/* } /> */}
);
};
export default AppRoutes;