Files

285 lines
7.6 KiB
TypeScript
Raw Permalink Normal View History

2025-09-08 13:10:20 -06:00
"use client";
2025-09-02 19:50:17 -04:00
import { useState } from "react";
import Link from "next/link";
2026-04-21 17:37:22 -05:00
import { usePathname } from "next/navigation";
2026-04-21 17:57:40 -05:00
import Image from "next/image";
2026-04-21 17:37:22 -05:00
2026-01-23 12:35:35 -06:00
import "./BarNavigation.css";
2025-09-02 19:50:17 -04:00
2026-01-23 12:35:35 -06:00
export default function BarNavigation() {
2025-09-08 13:10:20 -06:00
const [openMenu, setOpenMenu] = useState(false);
const [openSubMenu, setOpenSubMenu] = useState<number | null>(null);
2025-09-02 19:50:17 -04:00
2026-04-21 17:37:22 -05:00
const pathname = usePathname();
const isActive = (paths: string[]) => {
return paths.some((path) => pathname.startsWith(path));
};
2025-09-08 13:10:20 -06:00
const toggleMenu = () => setOpenMenu(!openMenu);
const toggleSubMenu = (index: number) => {
if (typeof window !== "undefined" && window.innerWidth <= 1000) {
2025-09-10 13:09:26 -06:00
setOpenSubMenu(openSubMenu === index ? null : index);
}
2025-09-08 13:10:20 -06:00
};
2025-09-02 19:50:17 -04:00
2026-01-19 13:08:36 -06:00
const closeAllMenus = () => {
setOpenMenu(false);
setOpenSubMenu(null);
};
2025-09-08 13:10:20 -06:00
return (
<nav className="barNavigation">
<div className={`menuToggle ${openMenu ? "" : ""}`} onClick={toggleMenu}>
<div></div>
<div></div>
<div></div>
</div>
2025-09-02 19:50:17 -04:00
2025-09-08 13:10:20 -06:00
<ul className={openMenu ? "active" : ""}>
2026-04-21 17:37:22 -05:00
<li
className={`subMenu
${openSubMenu === 0 ? "open" : ""}
${isActive(["/Inscripcion", "/AgregarTiempo"]) ? "active" : ""}
`}>
<span onClick={() => toggleSubMenu(0)}>
<Image
src="/user-plus.svg"
alt="Logo FES"
width={16}
height={16}
color="#545454"
/>
Inscripciones</span>
2026-01-19 13:08:36 -06:00
<ul onClick={toggleMenu}>
<Link
href="/Inscripcion"
2026-01-19 13:08:36 -06:00
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
<li>Inscripción Usuario</li>
2025-09-08 13:10:20 -06:00
</Link>
2026-01-19 13:08:36 -06:00
<Link
href="/AgregarTiempo"
2026-01-19 13:08:36 -06:00
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
<li>Agregar Tiempo</li>
2025-09-08 13:10:20 -06:00
</Link>
</ul>
</li>
2025-09-02 19:50:17 -04:00
2026-04-21 17:37:22 -05:00
<li
className={`subMenu
${openSubMenu === 1 ? "open" : ""}
${isActive(["/Impresiones", "/AsignacionMesas", "/AsignacionEquipo", "/Monitor"]) ? "active" : ""}
`}>
<span onClick={() => toggleSubMenu(1)}>
<Image
src="/briefcase.svg"
alt="Logo FES"
width={16}
height={16}
color="#545454"
/>
Servicios</span>
2025-09-08 13:10:20 -06:00
<ul onClick={toggleMenu}>
2026-01-19 13:08:36 -06:00
<Link
href="/Impresiones"
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
2025-09-08 13:10:20 -06:00
<li>Impresiones y Ploteo</li>
</Link>
2026-01-19 13:08:36 -06:00
<Link
href="/AsignacionMesas"
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
<li>Asignación de Mesas</li>
2025-09-08 13:10:20 -06:00
</Link>
2026-01-19 13:08:36 -06:00
<Link
href="/AsignacionEquipo"
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
<li>Asignación de Equipos</li>
2025-09-08 13:10:20 -06:00
</Link>
2026-01-19 13:08:36 -06:00
<Link
href="/Monitor"
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
2025-09-08 13:10:20 -06:00
<li>Monitor</li>
</Link>
</ul>
</li>
2025-09-02 19:50:17 -04:00
2026-04-21 17:37:22 -05:00
<li
className={`subMenu
${openSubMenu === 2 ? "open" : ""}
${isActive(["/InformacionEquipo", "/ActivosMantenimiento", "/Mensajes", "/Programas"]) ? "active" : ""}
`}>
<span onClick={() => toggleSubMenu(2)}>
<Image
src="/computer.svg"
alt="Logo FES"
width={16}
height={16}
color="#545454"
/>
Equipo</span>
2025-09-08 13:10:20 -06:00
<ul onClick={toggleMenu}>
2026-01-19 13:08:36 -06:00
<Link
href="/InformacionEquipo"
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
2025-09-08 13:10:20 -06:00
<li>Informacion de Equipos</li>
</Link>
2026-01-19 13:08:36 -06:00
<Link
href="/ActivosMantenimiento"
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
2025-09-08 13:10:20 -06:00
<li>Activos y en Mantenimiento</li>
</Link>
2026-02-13 16:10:05 -06:00
{/* <Link
2026-01-19 13:08:36 -06:00
href="/Mensajes"
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
2025-09-08 13:10:20 -06:00
<li>Mensajes</li>
2026-02-13 16:10:05 -06:00
</Link> */}
2026-01-19 13:08:36 -06:00
<Link
href="/Programas"
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
2025-09-08 13:10:20 -06:00
<li>Programas</li>
</Link>
</ul>
</li>
2025-09-02 19:50:17 -04:00
2026-04-21 17:37:22 -05:00
<li
className={`subMenu
${openSubMenu === 3 ? "open" : ""}
${isActive(["/Reportes", "/Inscritos"]) ? "active" : ""}
`}>
<span onClick={() => toggleSubMenu(3)}>
<Image
src="/chart.svg"
alt="Logo FES"
width={16}
height={16}
color="#545454"
/>
Reportes</span>
2025-09-08 13:10:20 -06:00
<ul onClick={toggleMenu}>
2026-01-19 13:08:36 -06:00
<Link
href="/Reportes"
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
2025-09-12 18:12:38 -06:00
<li>Reportes</li>
2025-09-08 13:10:20 -06:00
</Link>
2026-01-19 13:08:36 -06:00
<Link
href="/Inscritos"
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
2025-09-08 13:10:20 -06:00
<li>Inscritos</li>
</Link>
</ul>
</li>
2026-04-21 17:37:22 -05:00
<li
className={`subMenu
${isActive(["/BitacoraSanciones"]) ? "active" : ""}
`}
onClick={toggleMenu}>
2026-01-19 13:08:36 -06:00
<Link
2026-01-23 12:35:35 -06:00
href="/BitacoraSanciones"
2026-01-19 13:08:36 -06:00
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
2026-04-21 17:37:22 -05:00
<span>
<Image
src="/clipboard.svg"
alt="Logo FES"
width={16}
height={16}
color="#545454"
/>
Bitácora y sanciones</span>
2025-09-08 13:10:20 -06:00
</Link>
</li>
2026-04-21 17:37:22 -05:00
<li
className={`subMenu
${isActive(["/CambiarPass"]) ? "active" : ""}
`}
onClick={toggleMenu}>
2026-01-19 13:08:36 -06:00
<Link
href="/CambiarPass"
className="links"
onClick={(e) => {
e.stopPropagation();
closeAllMenus();
}}
>
2026-04-21 17:37:22 -05:00
<span>
<Image
src="/key.svg"
alt="Logo FES"
width={16}
height={16}
color="#545454"
/>
Cambiar contraseña</span>
2025-09-08 13:10:20 -06:00
</Link>
</li>
</ul>
</nav>
);
2025-09-02 19:50:17 -04:00
}
//IO