150 lines
6.9 KiB
TypeScript
150 lines
6.9 KiB
TypeScript
import React from "react";
|
|
import {
|
|
createBrowserRouter,
|
|
RouterProvider,
|
|
createRoutesFromElements,
|
|
Route,
|
|
Navigate
|
|
} from "react-router-dom";
|
|
import { LoginPage } from "./components/LoginPage";
|
|
import { Dashboard } from "./components/Dashboard";
|
|
import { MainLayout } from "./components/layouts/MainLayout";
|
|
import { PrivateRoute } from "./components/PrivateRoute";
|
|
import { AuthProvider } from "./contexts/AuthContext";
|
|
import { ClientesPage } from "./components/clientes/ClientesPage";
|
|
import { QueryClient, QueryClientProvider } from "react-query";
|
|
import { ClienteDetalhes } from "./components/clientes/ClienteDetalhes";
|
|
import { ProcessosPage } from "./components/processos/ProcessosPage";
|
|
import { ProcessoDetalhes } from "./components/processos/ProcessoDetalhes";
|
|
import { UsuariosPage } from "./components/usuarios/UsuariosPage";
|
|
import { AdminRoute } from "./components/AdminRoute";
|
|
import { PerfilPage } from "./components/perfil/PerfilPage";
|
|
import { AtendimentosPage } from "./components/atendimentos/AtendimentosPage";
|
|
import { AtendimentoDetalhes } from "./components/atendimentos/AtendimentoDetalhes";
|
|
import { LocalizationProvider } from '@mui/x-date-pickers';
|
|
import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
|
|
import { ptBR } from 'date-fns/locale';
|
|
import { ThemeProvider } from './contexts/ThemeContext';
|
|
import { TarefasPage } from "./components/tarefas/TarefasPage";
|
|
import { DocumentosPage } from './components/DocumentosPage';
|
|
import { ToastContainer } from 'react-toastify';
|
|
import 'react-toastify/dist/ReactToastify.css';
|
|
import { GerenciarTemplates } from './components/documentos/GerenciarTemplates';
|
|
import { ConfiguracaoDocumento } from './components/documentos/ConfiguracaoDocumento';
|
|
import { ProcessoAdministrativoList } from './components/processosAdministrativos/ProcessoAdministrativoList';
|
|
import { ProcessoAdminDetalhes } from './components/processosAdministrativos/ProcessoAdminDetalhes';
|
|
import { ProtectedRoute } from './components/ProtectedRoute';
|
|
import { ProvaUpload } from './components/provas/ProvaUpload';
|
|
import { ProvaStatus } from './components/provas/ProvaStatus';
|
|
import { AdminProvas } from './components/provas/AdminProvas';
|
|
import { VerificarProva } from './components/provas/VerificarProva';
|
|
import { ErrorBoundary } from './components/ErrorBoundary';
|
|
import { PublicVerificarProva } from './components/provas/PublicVerificarProva';
|
|
import { ClientProvaUpload } from './components/provas/ClientProvaUpload';
|
|
import { PublicProvaStatus } from './components/provas/PublicProvaStatus';
|
|
|
|
// Importar os componentes de cálculos
|
|
import { CalculosList } from './components/calculos/CalculosList';
|
|
import { NovoCalculo } from './components/calculos/NovoCalculo';
|
|
import { DetalhesCalculo } from './components/calculos/DetalhesCalculo';
|
|
import { NovoPensaoAlimenticia } from './components/calculos/NovoPensaoAlimenticia';
|
|
|
|
const queryClient = new QueryClient();
|
|
|
|
const router = createBrowserRouter(
|
|
createRoutesFromElements(
|
|
<>
|
|
<Route path="/" element={<Navigate to="/dashboard" />} errorElement={<ErrorBoundary />} />
|
|
<Route path="/login" element={<LoginPage />} />
|
|
|
|
{/* Rotas públicas para validação digital */}
|
|
<Route path="/public/verificar/:hash" element={<PublicVerificarProva />} errorElement={<ErrorBoundary />} />
|
|
<Route path="/public/provas/upload" element={<ClientProvaUpload />} errorElement={<ErrorBoundary />} />
|
|
<Route path="/public/provas/status/:id" element={<PublicProvaStatus />} errorElement={<ErrorBoundary />} />
|
|
|
|
<Route element={<PrivateRoute />}>
|
|
<Route element={<MainLayout />}>
|
|
<Route path="dashboard" element={<Dashboard />} />
|
|
<Route path="documentos" element={<DocumentosPage />} />
|
|
<Route path="documentos/templates" element={<GerenciarTemplates />} />
|
|
<Route path="documentos/:id" element={<DocumentosPage />} />
|
|
<Route path="documentos/configuracoes" element={<ConfiguracaoDocumento />} />
|
|
<Route path="processos/:processoId/documentos" element={<DocumentosPage />} />
|
|
<Route path="atendimentos/:atendimentoId/documentos" element={<DocumentosPage />} />
|
|
<Route path="/processos" element={<ProcessosPage />} />
|
|
<Route path="/processos/:id" element={<ProcessoDetalhes />} />
|
|
<Route path="/clientes" element={<ClientesPage />} />
|
|
<Route path="/clientes/:id" element={<ClienteDetalhes />} />
|
|
<Route path="/perfil" element={<PerfilPage />} />
|
|
<Route path="/atendimentos" element={<AtendimentosPage />} />
|
|
<Route path="/atendimentos/:id" element={<AtendimentoDetalhes />} />
|
|
<Route path="/tarefas" element={<TarefasPage />} />
|
|
<Route path="/processos-administrativos" element={<ProtectedRoute roles={['ADVOGADO_ADMIN', 'ADVOGADO', 'ASSISTENTE']}><ProcessoAdministrativoList /></ProtectedRoute>} />
|
|
<Route path="/processos-administrativos/:id" element={<ProtectedRoute roles={['ADVOGADO_ADMIN', 'ADVOGADO', 'ASSISTENTE']}><ProcessoAdminDetalhes /></ProtectedRoute>} />
|
|
<Route path="/provas/upload" element={<ProvaUpload />} />
|
|
<Route path="/provas/status/:id" element={<ProvaStatus />} />
|
|
<Route path="/provas/admin" element={
|
|
<ProtectedRoute roles={['ADVOGADO_ADMIN']}>
|
|
<AdminProvas />
|
|
</ProtectedRoute>
|
|
} />
|
|
<Route
|
|
path="/provas/verificar/:hash"
|
|
element={<VerificarProva />}
|
|
errorElement={<ErrorBoundary />}
|
|
/>
|
|
{/* Rotas para Cálculos Judiciais */}
|
|
<Route path="/calculos" element={
|
|
<ProtectedRoute>
|
|
<CalculosList />
|
|
</ProtectedRoute>
|
|
} />
|
|
|
|
<Route path="/calculos/novo" element={
|
|
<ProtectedRoute>
|
|
<NovoCalculo />
|
|
</ProtectedRoute>
|
|
} />
|
|
|
|
<Route path="/calculos/:id" element={
|
|
<ProtectedRoute>
|
|
<DetalhesCalculo />
|
|
</ProtectedRoute>
|
|
} />
|
|
|
|
{/* Rotas para Pensão Alimentícia */}
|
|
<Route path="/pensao-alimenticia/nova" element={
|
|
<ProtectedRoute>
|
|
<NovoPensaoAlimenticia />
|
|
</ProtectedRoute>
|
|
} />
|
|
|
|
<Route path="/pensao-alimenticia/:id" element={
|
|
<ProtectedRoute>
|
|
<DetalhesCalculo />
|
|
</ProtectedRoute>
|
|
} />
|
|
</Route>
|
|
</Route>
|
|
<Route path="*" element={<Navigate to="/login" />} />
|
|
</>
|
|
)
|
|
);
|
|
|
|
export const App: React.FC = () => {
|
|
return (
|
|
<QueryClientProvider client={queryClient}>
|
|
<LocalizationProvider dateAdapter={AdapterDateFns} adapterLocale={ptBR}>
|
|
<AuthProvider>
|
|
<ThemeProvider>
|
|
<RouterProvider router={router} />
|
|
<ToastContainer />
|
|
</ThemeProvider>
|
|
</AuthProvider>
|
|
</LocalizationProvider>
|
|
</QueryClientProvider>
|
|
);
|
|
};
|
|
|
|
export default App;
|