# Componentes Reutilizables

Este directorio contiene componentes reutilizables para evitar duplicar código en múltiples vistas.

## ⚡ Solución Rápida: JavaScript (Sin cambiar extensiones)

**Para usar con archivos `.html` sin necesidad de cambiarlos a `.php`**

### Componentes HTML + JavaScript

1. **`navbar-user.html`** - Componente HTML del navbar del usuario
2. **`load-navbar-component.js`** - Script que carga el componente automáticamente

### Cómo Usar (HTML)

**Opción A: Reemplazar el navbar existente automáticamente**

En cualquier vista HTML, simplemente agrega este script antes de cerrar `</body>`:

```html
<!-- Script para cargar componente navbar -->
<script src="assets/scripts/load-navbar-component.js"></script>
<!-- Script para actualizar datos del usuario -->
<script src="assets/scripts/update-navbar-user.js"></script>
```

El script **automáticamente**:
- Busca el navbar existente en `.nav-right .dropdown`
- Lo reemplaza con el componente actualizado
- Ajusta las rutas relativas según la ubicación de la vista

**Ejemplo en `OSM_TREAL.html`:**

```html
<body>
  <!-- ... contenido ... -->
  
  <!-- Antes de cerrar </body> -->
  <script src="assets/scripts/load-navbar-component.js"></script>
  <script src="assets/scripts/update-navbar-user.js"></script>
</body>
```

**Opción B: Marcar el navbar para reemplazo**

Si quieres más control, agrega un `data-attribute` al navbar existente:

```html
<ul class="nav-right">
  <!-- ... otros elementos ... -->
  <li class="dropdown" data-replace-with-component="navbar-user">
    <!-- Este será reemplazado automáticamente -->
  </li>
</ul>
```

### Ventajas

✅ **No necesitas cambiar extensiones** - Funciona con `.html`  
✅ **Automático** - El script detecta y reemplaza el navbar  
✅ **Rutas inteligentes** - Ajusta rutas según ubicación  
✅ **Mantenimiento fácil** - Cambias `navbar-user.html` y se actualiza en todas las vistas

---

## 🔧 Solución PHP: Includes (Requiere .php)

**Para usar `include` de PHP, las vistas deben ser `.php`**

### Componentes PHP

1. **`navbar-user.php`** - Dropdown del usuario en el navbar
2. **`navbar-user-css.php`** - CSS común para el avatar circular
3. **`navbar-user-script.php`** - Script para actualizar navbar
4. **`path-helper.php`** - Helper para determinar rutas relativas

### Cómo Usar (PHP)

Si tu vista es un archivo `.php`, simplemente incluye los componentes:

```php
<!DOCTYPE html>
<html>
<head>
    <!-- ... head content ... -->
    
    <!-- Incluir CSS del navbar -->
    <?php include __DIR__ . '/components/navbar-user-css.php'; ?>
</head>
<body>
    <!-- ... navbar structure ... -->
    
    <!-- Donde va el dropdown del usuario, reemplaza el HTML por: -->
    <?php include __DIR__ . '/components/navbar-user.php'; ?>
    
    <!-- ... resto del contenido ... -->
    
    <!-- Antes de cerrar </body>, incluir script -->
    <?php include __DIR__ . '/components/navbar-user-script.php'; ?>
</body>
</html>
```

### Ejemplo Completo (PHP)

```php
<!-- Vista: src/reportes/alertas/reporte-alertas.php -->
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Reporte de Alertas</title>
    
    <!-- CSS común del navbar -->
    <?php include __DIR__ . '/../../components/navbar-user-css.php'; ?>
</head>
<body>
    <div class="header navbar">
        <div class="header-container">
            <ul class="nav-right">
                <!-- Otros elementos del navbar -->
                
                <!-- Componente del navbar del usuario -->
                <?php include __DIR__ . '/../../components/navbar-user.php'; ?>
            </ul>
        </div>
    </div>
    
    <!-- Contenido de la vista -->
    <main>
        <!-- ... -->
    </main>
    
    <!-- Script para actualizar navbar -->
    <?php include __DIR__ . '/../../components/navbar-user-script.php'; ?>
</body>
</html>
```

---

## 🤔 ¿Cuál Usar?

### Usa JavaScript (HTML) si:
- ✅ Quieres mantener tus archivos como `.html`
- ✅ No quieres cambiar extensiones
- ✅ Prefieres una solución más simple de implementar

### Usa PHP (Includes) si:
- ✅ Ya estás usando PHP en tus vistas
- ✅ Prefieres procesamiento del lado del servidor
- ✅ Quieres mejor rendimiento (no carga extra en el cliente)

---

## 📝 Notas Importantes

- Los componentes detectan automáticamente la ubicación del archivo que los incluye
- Las rutas se calculan correctamente para:
  - Vistas en la raíz (`src/`)
  - Vistas en subdirectorios (`src/reportes/`, `src/cuenta/`, `src/osm-recorrido/`)
- El script `update-navbar-user.js` se carga automáticamente con la ruta correcta

---

## 🚀 Migración Rápida

### Para migrar una vista a JavaScript (HTML):

1. Agrega antes de `</body>`:
   ```html
   <script src="assets/scripts/load-navbar-component.js"></script>
   <script src="assets/scripts/update-navbar-user.js"></script>
   ```
2. Listo. El navbar se actualizará automáticamente.

### Para migrar una vista a PHP:

1. Renombrar `.html` → `.php`
2. Reemplazar el HTML del navbar con `<?php include ... ?>`
3. Agregar CSS y script con includes
4. Probar que funcione

---

## 📚 Documentación Adicional

- Ver `_desarrollo/GUIA_MIGRACION_COMPONENTES.md` para guía detallada de migración PHP
