@props(['selected'])

{{--
    El menú de la sección Plugins.

    **Sustituye a las pestañas.** Eran tres —«Plugins Tresipunt», «Inventario» y
    «Versiones de Moodle»— dentro de una sola pantalla, con un cuarto bloque escondido
    dentro de la primera. Una pestaña no se puede enlazar desde un correo, no sale en el
    menú lateral, y **obliga a calcular lo de las otras dos** para poder pintar sus
    contadores: entrar a ver el inventario pagaba también el detalle de versiones de lo
    nuestro y la comprobación del core.

    Ahora son cinco páginas con URL propia, y este menú es el mismo patrón que el de
    Monitorización: **dice si hay algo que mirar antes de entrar**. Cinco nombres iguales
    obligan a abrir los cinco para saber que no pasa nada.

    - un número en **ámbar** cuando hay trabajo en esa pantalla,
    - un punto **verde** cuando se puede afirmar que no lo hay,
    - y un punto **gris** cuando no se puede afirmar — que es lo que pasa mientras el
      parque no envíe inventario, y decirlo es más honesto que un verde que significa
      «no tengo datos».

    Los contadores van **cacheados 60 segundos**: esto se pinta en cinco pantallas y sale
    de agregados sobre la tabla de plugins del parque entero.
--}}
@php
    use App\Models\Environments\Plugin;
    use App\Models\Environments\Environment;

    $estado = \Illuminate\Support\Facades\Cache::remember('plugins:menu', 60, function () {
        // **La prueba de que hay datos**, que es lo que hace que el verde signifique algo.
        // Sin ningún entorno enviando inventario, «cero componentes con actualización» no
        // dice que el parque esté al día: dice que no sabemos nada de él.
        $envian = Plugin::distinct()->count('environment_id');

        if ($envian === 0) {
            return ['vacio' => true];
        }

        return [
            'vacio' => false,
            // Componentes con alguna actualización pendiente en algún sitio. `has_updates`
            // es la marca que manda el propio Moodle, que es de donde sale el resto de la
            // sección: calcularlo aquí de otra forma daría dos números distintos.
            'actualizables' => Plugin::where('has_updates', true)->distinct()->count('component'),
        ];
    });

    $paginas = [
        ['clave' => 'resumen', 'ruta' => 'plugins.index', 'titulo' => 'Resumen'],
        ['clave' => 'nuestros', 'ruta' => 'plugins.nuestros', 'titulo' => 'Plugins Tresipunt'],
        ['clave' => 'sin-instalar', 'ruta' => 'plugins.sin-instalar', 'titulo' => 'Licenciado y sin instalar'],
        ['clave' => 'inventario', 'ruta' => 'plugins.inventario', 'titulo' => 'Inventario', 'aviso' => $estado['vacio'] ? null : ($estado['actualizables'] ?: null)],
        ['clave' => 'core', 'ruta' => 'plugins.core', 'titulo' => 'Versiones de Moodle'],
    ];
@endphp

<div class="flex flex-wrap items-center gap-1.5">
    @foreach ($paginas as $pagina)
        @php $activa = $selected === $pagina['clave']; @endphp

        <a href="{{ route($pagina['ruta']) }}" wire:navigate
           class="flex items-center gap-2 rounded-lg border px-3 py-1.5 text-[12.5px] font-semibold"
           style="border-color:{{ $activa ? 'var(--text-strong)' : 'var(--border-default)' }};
                  background:{{ $activa ? 'var(--surface-card)' : 'transparent' }};
                  color:{{ $activa ? 'var(--text-strong)' : 'var(--text-muted)' }};">
            {{ $pagina['titulo'] }}

            @if (! empty($pagina['aviso']))
                <span class="rounded px-1.5 py-px text-[10.5px] font-bold"
                      title="Con actualización disponible"
                      style="color:var(--warning-500); background:var(--warning-50);">{{ $pagina['aviso'] }}</span>
            @elseif ($estado['vacio'])
                {{-- Gris: no es una alarma, es «no lo sé». Ningún sitio envía inventario. --}}
                <span class="h-1.5 w-1.5 rounded-full" title="Todavía no hay inventario de ningún sitio"
                      style="background:var(--text-subtle);"></span>
            @endif
        </a>
    @endforeach
</div>
