forked from RiseUP/riseup-squad18
134 lines
5.1 KiB
TypeScript
134 lines
5.1 KiB
TypeScript
import {
|
|
BrowserRouter as Router,
|
|
Routes,
|
|
Route,
|
|
Navigate,
|
|
useLocation,
|
|
} from "react-router-dom";
|
|
import { Toaster } from "react-hot-toast";
|
|
import Header from "./components/Header";
|
|
import AccessibilityMenu from "./components/AccessibilityMenu";
|
|
import { CommandPalette } from "./components/ui/CommandPalette";
|
|
import { InstallPWA } from "./components/pwa/InstallPWA";
|
|
import { useCommandPalette } from "./hooks/useCommandPalette";
|
|
import ProtectedRoute from "./components/auth/ProtectedRoute";
|
|
import Home from "./pages/Home";
|
|
import Login from "./pages/Login";
|
|
import LoginPaciente from "./pages/LoginPaciente";
|
|
import LoginSecretaria from "./pages/LoginSecretaria";
|
|
import LoginMedico from "./pages/LoginMedico";
|
|
import AgendamentoPaciente from "./pages/AgendamentoPaciente";
|
|
import AcompanhamentoPaciente from "./pages/AcompanhamentoPaciente";
|
|
import PainelMedico from "./pages/PainelMedico";
|
|
import PainelSecretaria from "./pages/PainelSecretaria";
|
|
import MensagensMedico from "./pages/MensagensMedico";
|
|
import ProntuarioPaciente from "./pages/ProntuarioPaciente";
|
|
import TokenInspector from "./pages/TokenInspector";
|
|
import AdminDiagnostico from "./pages/AdminDiagnostico";
|
|
// import TesteCadastroSquad18 from "./pages/TesteCadastroSquad18"; // Arquivo removido
|
|
import PainelAdmin from "./pages/PainelAdmin";
|
|
import CentralAjudaRouter from "./pages/CentralAjudaRouter";
|
|
import PerfilMedico from "./pages/PerfilMedico";
|
|
import PerfilPaciente from "./pages/PerfilPaciente";
|
|
import ClearCache from "./pages/ClearCache";
|
|
import AuthCallback from "./pages/AuthCallback";
|
|
import ResetPassword from "./pages/ResetPassword";
|
|
import LandingPage from "./pages/LandingPage";
|
|
|
|
function AppLayout() {
|
|
const location = useLocation();
|
|
const isLandingPage = location.pathname === "/";
|
|
|
|
return (
|
|
<div className="app-root min-h-screen bg-gray-50 dark:bg-slate-900 dark:bg-gradient-to-br dark:from-slate-900 dark:to-slate-800 transition-colors duration-300">
|
|
<a
|
|
href="#main-content"
|
|
className="fixed -top-20 left-4 z-50 px-3 py-2 bg-blue-600 text-white rounded shadow transition-all focus:top-4 focus:outline-none focus-visual:ring-2 focus-visible:ring-offset-2 focus-visible:ring-blue-500"
|
|
>
|
|
Pular para o conteúdo
|
|
</a>
|
|
{!isLandingPage && <Header />}
|
|
<main
|
|
id="main-content"
|
|
className={isLandingPage ? "" : "container mx-auto px-4 py-6 max-w-7xl"}
|
|
>
|
|
<Routes>
|
|
<Route path="/" element={<LandingPage />} />
|
|
<Route path="/home" element={<Home />} />
|
|
<Route path="/clear-cache" element={<ClearCache />} />
|
|
<Route path="/auth/callback" element={<AuthCallback />} />
|
|
<Route path="/reset-password" element={<ResetPassword />} />
|
|
<Route path="/login" element={<Login />} />
|
|
<Route path="/paciente" element={<LoginPaciente />} />
|
|
<Route path="/login-secretaria" element={<LoginSecretaria />} />
|
|
<Route path="/login-medico" element={<LoginMedico />} />
|
|
<Route path="/dev/token" element={<TokenInspector />} />
|
|
<Route path="/admin/diagnostico" element={<AdminDiagnostico />} />
|
|
{/* <Route path="/teste-squad18" element={<TesteCadastroSquad18 />} /> */}
|
|
<Route path="/ajuda" element={<CentralAjudaRouter />} />
|
|
<Route element={<ProtectedRoute roles={["admin", "gestor"]} />}>
|
|
<Route path="/admin" element={<PainelAdmin />} />
|
|
</Route>
|
|
<Route
|
|
element={
|
|
<ProtectedRoute
|
|
roles={["medico", "gestor", "secretaria", "admin"]}
|
|
/>
|
|
}
|
|
>
|
|
<Route path="/painel-medico" element={<PainelMedico />} />
|
|
<Route path="/mensagens" element={<MensagensMedico />} />
|
|
<Route path="/perfil-medico" element={<PerfilMedico />} />
|
|
</Route>
|
|
<Route
|
|
element={
|
|
<ProtectedRoute roles={["secretaria", "gestor", "admin"]} />
|
|
}
|
|
>
|
|
<Route path="/painel-secretaria" element={<PainelSecretaria />} />
|
|
<Route path="/pacientes/:id" element={<ProntuarioPaciente />} />
|
|
</Route>
|
|
<Route
|
|
element={
|
|
<ProtectedRoute roles={["paciente", "user", "admin", "gestor"]} />
|
|
}
|
|
>
|
|
<Route
|
|
path="/acompanhamento"
|
|
element={<AcompanhamentoPaciente />}
|
|
/>
|
|
<Route path="/agendamento" element={<AgendamentoPaciente />} />
|
|
<Route path="/perfil-paciente" element={<PerfilPaciente />} />
|
|
</Route>
|
|
<Route path="*" element={<Navigate to="/" replace />} />
|
|
</Routes>
|
|
</main>
|
|
<Toaster position="top-right" />
|
|
<AccessibilityMenu />
|
|
</div>
|
|
);
|
|
}
|
|
|
|
function App() {
|
|
const { isOpen, close } = useCommandPalette();
|
|
|
|
return (
|
|
<Router
|
|
future={{
|
|
v7_startTransition: true,
|
|
v7_relativeSplatPath: true,
|
|
}}
|
|
>
|
|
<AppLayout />
|
|
|
|
{/* Command Palette Global (Ctrl+K) */}
|
|
{isOpen && <CommandPalette onClose={close} />}
|
|
|
|
{/* PWA Install Prompt */}
|
|
<InstallPWA />
|
|
</Router>
|
|
);
|
|
}
|
|
|
|
export default App;
|