Barra Lateral de Navegación
El componente Sidebar muestra una barra lateral de navegación adaptable según el tipo de usuario (empresarial, desarrollador, individual) y su rol (ADMIN, DESARROLLADOR, etc.). Brinda acceso rápido a las secciones clave de la aplicación con íconos representativos, diseño colapsable y enlaces dinámicos.
🔍 Ubicación
src/components/Sidebar.tsx
📦 Dependencias
-
React Hooks:
useEffect,useState -
React Router:
Link,useLocationpara navegación y detección de rutas activas -
react-icons:
FaHome,FaChartBar,FaBox,FaHistory,FaQrcode,FaCog,FaClipboardList
-
clsx: para aplicar clases condicionalmente
⚙️ Comportamiento
- Detecta el tipo de usuario (
tipoUsuario) y rol (rol) desdelocalStorage - Define dinámicamente el
basePathpara rutas internas según el tipo de usuario - Muestra u oculta ítems del menú con base en el rol del usuario
- Expande el sidebar al hacer hover (de
w-20aw-60) - Aplica resaltado visual en el ítem activo mediante comparación con
location.pathname
🧠 Lógica Interna
| Estado | Tipo | Descripción |
|---|---|---|
tipoUsuario | string | null | Tipo de cuenta: empresarial, desarrollador, individual |
rol | string | null | Rol del usuario: ADMIN, DESARROLLADOR, etc. |
- El
useEffectinicializa estos valores leyendo dellocalStorage. basePathse construye en función detipoUsuario.
🧭 Estructura del Menú
| Ícono | Texto | Ruta | Visibilidad Condicional |
|---|---|---|---|
FaHome | Home | ${basePath}/home | Todos los usuarios |
FaBox | Inventario | ${basePath}/inventario | Todos los usuarios |
FaChartBar | Reportes | /app/desarrollador/reportes | Solo DESARROLLADOR |
FaHistory | Historial | ${basePath}/historial | Todos los usuarios |
FaQrcode | NutriScan | /nutriscan | Solo usuarios individual |
FaClipboardList | Auditoría | /auditoria | Solo ADMIN y DESARROLLADOR |
FaCog | Configuración | ${basePath}/configuracion | Todos los usuarios |
🎨 Diseño y Comportamiento Visual
-
Colores:
- Fondo:
#404D2C(verde oscuro) - Hover: texto
#FCDDEC(rosado claro)
- Fondo:
-
Animaciones:
- Transición suave al expandirse (
w-20aw-60) - Etiquetas de menú ocultas hasta hacer hover (
group-hover)
- Transición suave al expandirse (
-
Accesibilidad:
- Íconos visibles siempre
- Texto visible en hover
💡 Ejemplo de Uso
Este componente se puede usar directamente dentro de una vista principal o layout:
<Sidebar />
Asegúrate de que el
localStoragecontengatipoUsuarioyrolantes de renderizarlo, ya que esos valores determinan el contenido mostrado.
📝 Notas Adicionales
- El componente no es responsive por defecto (fijo a la izquierda con altura completa
h-screen). - Se puede envolver en un layout flexible para adaptar mejor el diseño en móviles o tablets.
- El uso de
clsxmejora la claridad y legibilidad de las clases condicionales de Tailwind.