216 lines
7.6 KiB
TypeScript
216 lines
7.6 KiB
TypeScript
import { LoginPage } from "./components/LoginPage";
|
|
import { Dashboard } from "./components/Dashboard";
|
|
import { MainLayout } from "./components/layouts/MainLayout";
|
|
import { AuthProvider } from "./contexts/AuthContext";
|
|
|
|
import { LocalizationProvider } from "@mui/x-date-pickers";
|
|
import { AdapterDateFns } from "@mui/x-date-pickers/AdapterDateFns";
|
|
import { ptBR } from "date-fns/locale";
|
|
import React from "react";
|
|
import { QueryClient, QueryClientProvider } from "react-query";
|
|
import {
|
|
createBrowserRouter,
|
|
RouterProvider,
|
|
createRoutesFromElements,
|
|
Route,
|
|
Navigate,
|
|
} from "react-router-dom";
|
|
|
|
import { ThemeProvider } from "./contexts/ThemeContext";
|
|
import { TarefasPage } from "./components/tarefas/TarefasPage";
|
|
import { DocumentosPage } from "./components/DocumentosPage";
|
|
|
|
import { ToastContainer } from "react-toastify";
|
|
|
|
import { AdminRoute } from "./components/AdminRoute";
|
|
import { AtendimentoDetalhes } from "./components/atendimentos/AtendimentoDetalhes";
|
|
import { AtendimentosPage } from "./components/atendimentos/AtendimentosPage";
|
|
|
|
import "react-toastify/dist/ReactToastify.css";
|
|
|
|
// Importar os componentes de cálculos
|
|
import { CalculosList } from "./components/calculos/CalculosList";
|
|
import { DetalhesCalculo } from "./components/calculos/DetalhesCalculo";
|
|
import { NovoCalculo } from "./components/calculos/NovoCalculo";
|
|
import { NovoPensaoAlimenticia } from "./components/calculos/NovoPensaoAlimenticia";
|
|
import { ClienteDetalhes } from "./components/clientes/ClienteDetalhes";
|
|
import { ClientesPage } from "./components/clientes/ClientesPage";
|
|
import { ConfiguracaoDocumento } from "./components/documentos/ConfiguracaoDocumento";
|
|
import { GerenciarTemplates } from "./components/documentos/GerenciarTemplates";
|
|
import { ErrorBoundary } from "./components/ErrorBoundary";
|
|
import { PerfilPage } from "./components/perfil/PerfilPage";
|
|
import { PrivateRoute } from "./components/PrivateRoute";
|
|
import { ProcessoDetalhes } from "./components/processos/ProcessoDetalhes";
|
|
import { ProcessosPage } from "./components/processos/ProcessosPage";
|
|
import { ProcessoAdminDetalhes } from "./components/processosAdministrativos/ProcessoAdminDetalhes";
|
|
import { ProcessoAdministrativoList } from "./components/processosAdministrativos/ProcessoAdministrativoList";
|
|
import { ProtectedRoute } from "./components/ProtectedRoute";
|
|
import { AdminProvas } from "./components/provas/AdminProvas";
|
|
import { ClientProvaUpload } from "./components/provas/ClientProvaUpload";
|
|
import { ProvaStatus } from "./components/provas/ProvaStatus";
|
|
import { ProvaUpload } from "./components/provas/ProvaUpload";
|
|
import { PublicProvaStatus } from "./components/provas/PublicProvaStatus";
|
|
import { PublicVerificarProva } from "./components/provas/PublicVerificarProva";
|
|
import { VerificarProva } from "./components/provas/VerificarProva";
|
|
import { UsuariosPage } from "./components/usuarios/UsuariosPage";
|
|
|
|
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;
|