e25c2c3b35
Ingesta POST /api/inventory (JSON/XML, token de instalacion), upsert por deviceid, historial de cambios, pestañas Resumen/Equipos/Software/Agentes, detalle con buscador por pestaña y casilla para ocultar actualizaciones/drivers/componentes del software. Migraciones 023 y 024. Diseño en docs/ARQUITECTURA-INVENTARIO.md. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
63 lines
3.3 KiB
React
63 lines
3.3 KiB
React
import { BrowserRouter, Routes, Route } from 'react-router-dom';
|
|
import { AuthProvider } from '../context/auth-context.jsx';
|
|
import { UiProvider } from '../context/ui-context.jsx';
|
|
import { BrandingProvider } from '../context/branding-context.jsx';
|
|
import { ContentDialogHost } from '../components/ContentDialog.jsx';
|
|
import { ToastHost } from '../components/ToastHost.jsx';
|
|
import { ErrorBoundary } from '../components/ErrorBoundary.jsx';
|
|
import { ProtectedRoute } from './ProtectedRoute.jsx';
|
|
import AppShell from './AppShell.jsx';
|
|
import LoginPage from '../pages/Login/LoginPage.jsx';
|
|
import RegisterPage from '../pages/Login/RegisterPage.jsx';
|
|
import VerifyEmailPage from '../pages/Login/VerifyEmailPage.jsx';
|
|
import ForgotPasswordPage from '../pages/Login/ForgotPasswordPage.jsx';
|
|
import ResetPasswordPage from '../pages/Login/ResetPasswordPage.jsx';
|
|
import AcceptInvitePage from '../pages/Login/AcceptInvitePage.jsx';
|
|
import DashboardPage from '../pages/Dashboard/DashboardPage.jsx';
|
|
import OrganizacionPage from '../pages/Organizacion/OrganizacionPage.jsx';
|
|
import ProyectosPage from '../pages/Proyectos/ProyectosPage.jsx';
|
|
import ProyectoDetallePage from '../pages/Proyectos/ProyectoDetallePage.jsx';
|
|
import ConfiguracionPage from '../pages/Configuracion/ConfiguracionPage.jsx';
|
|
import RecurringTasksPage from '../pages/RecurringTasks/RecurringTasksPage.jsx';
|
|
import NotasPage from '../pages/Notas/NotasPage.jsx';
|
|
import ContrasenasPage from '../pages/Contrasenas/ContrasenasPage.jsx';
|
|
import EquiposPage from '../pages/Equipos/EquiposPage.jsx';
|
|
import ResetVaultPinPage from '../pages/Login/ResetVaultPinPage.jsx';
|
|
|
|
export default function App() {
|
|
return (
|
|
<ErrorBoundary>
|
|
<BrandingProvider>
|
|
<UiProvider>
|
|
<AuthProvider>
|
|
<BrowserRouter>
|
|
<Routes>
|
|
<Route path="/login" element={<LoginPage />} />
|
|
<Route path="/registro" element={<RegisterPage />} />
|
|
<Route path="/verificar-correo" element={<VerifyEmailPage />} />
|
|
<Route path="/olvide-clave" element={<ForgotPasswordPage />} />
|
|
<Route path="/restablecer-clave" element={<ResetPasswordPage />} />
|
|
<Route path="/restablecer-pin" element={<ResetVaultPinPage />} />
|
|
<Route path="/aceptar-invitacion" element={<AcceptInvitePage />} />
|
|
<Route path="/" element={<ProtectedRoute><AppShell /></ProtectedRoute>}>
|
|
<Route index element={<DashboardPage />} />
|
|
<Route path="proyectos" element={<ProyectosPage />} />
|
|
<Route path="proyectos/:id" element={<ProyectoDetallePage />} />
|
|
<Route path="tareas-recurrentes" element={<RecurringTasksPage />} />
|
|
<Route path="notas" element={<NotasPage />} />
|
|
<Route path="contrasenas" element={<ContrasenasPage />} />
|
|
<Route path="equipos" element={<EquiposPage />} />
|
|
<Route path="organizacion" element={<OrganizacionPage />} />
|
|
<Route path="configuracion" element={<ConfiguracionPage />} />
|
|
</Route>
|
|
</Routes>
|
|
</BrowserRouter>
|
|
<ContentDialogHost />
|
|
<ToastHost />
|
|
</AuthProvider>
|
|
</UiProvider>
|
|
</BrandingProvider>
|
|
</ErrorBoundary>
|
|
);
|
|
}
|