Files
anatomia/frontend/src/components/Layout.tsx
T
Rodrigo Bertoldo de Sousa Martins f32833c023 mitose e meiose
Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo@martinsevieira.adv.br>
2026-09-17 12:06:17 -03:00

60 lines
2.1 KiB
TypeScript

import { useEffect } from "react";
import { NavLink, Outlet, useLocation } from "react-router-dom";
import { OnlineCounter } from "./OnlineCounter.js";
import { CookieConsent } from "./CookieConsent.js";
import { FeedbackWidget } from "./FeedbackWidget.js";
import { trackVisit } from "../lib/analytics.js";
const linkClass = ({ isActive }: { isActive: boolean }) =>
`px-3 py-1.5 rounded text-sm ${isActive ? "bg-accent text-white" : "text-slate-300 hover:bg-white/5"}`;
export function Layout() {
const location = useLocation();
useEffect(() => {
trackVisit(location.pathname);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [location.pathname]);
return (
<div className="h-[100dvh] flex flex-col">
<header className="flex items-center gap-2 sm:gap-4 px-2 sm:px-4 py-2 border-b border-white/10 bg-panel overflow-x-auto">
<h1 className="text-sm font-semibold tracking-wide text-white whitespace-nowrap">
🫀 <span className="hidden sm:inline">Atlas 3D de Anatomia</span>
</h1>
<nav className="flex gap-1 shrink-0">
<NavLink to="/" end className={linkClass}>
Atlas
</NavLink>
<NavLink to="/planos-anatomicos" className={linkClass}>
Planos e Eixos
</NavLink>
<NavLink to="/exame-fisico" className={linkClass}>
Exame Físico
</NavLink>
<NavLink to="/divisao-celular" className={linkClass}>
Mitose e Meiose
</NavLink>
<NavLink to="/quiz" className={linkClass}>
Quiz
</NavLink>
</nav>
<OnlineCounter />
<a
href="https://github.com/LluisV/Z-Anatomy-Sample"
target="_blank"
rel="noreferrer"
className="ml-auto hidden md:inline-block text-[11px] text-slate-500 hover:text-slate-300 shrink-0"
>
Modelos 3D: projeto Z-Anatomy (CC BY-SA 4.0)
</a>
</header>
<main className="flex-1 min-h-0">
<Outlet />
</main>
<FeedbackWidget />
<CookieConsent />
</div>
);
}