<main id="main-content">
    <h1>Système</h1>

    <p class="sys-refresh-note">
        Affiché le <?= date('d/m/Y à H:i:s') ?> —
        <a href="?tab=<?= htmlspecialchars($activeTab) ?>&amp;n=<?= $selectedN ?>">Rafraîchir</a> —
        <a href="?tab=<?= htmlspecialchars($activeTab) ?>&amp;n=<?= $selectedN ?>&amp;refresh=1">Forcer actualisation</a>
    </p>

    <!-- ════════════════════════════════════════════════════════════════════
         STATUS SECTION — always visible above tabs
    ════════════════════════════════════════════════════════════════════ -->
    <section class="sys-status-section" aria-label="Statut du système">
        <div class="sys-status-header">
            <h2 class="srv-section-title srv-section-title--compact">Statut
                <?php if ($statusCached && $statusCacheAge !== null): ?>
                <span class="sys-cache-badge sys-cache-badge--hit" title="Données en cache">
                    ⚡ Cache — il y a <?= $statusCacheAge ?>s
                </span>
                <?php else: ?>
                <span class="sys-cache-badge sys-cache-badge--miss" title="Données fraîches">
                    ⟳ Actualisé
                </span>
                <?php endif; ?>
            </h2>
            <button id="sys-status-toggle" class="sys-status-toggle"
                    aria-expanded="<?= $statusInitiallyCollapsed ? 'false' : 'true' ?>" aria-controls="sys-status-body"
                    type="button"
                    onclick="var b=document.getElementById('sys-status-body');var c=b.hidden;b.hidden=!c;this.setAttribute('aria-expanded',c);this.textContent=c?'▲ Réduire':'▼ Développer';document.cookie='sys_collapsed='+(!c)+';path=/;max-age=31536000';return false">
              <?= $statusInitiallyCollapsed ? '▼ Développer' : '▲ Réduire' ?>
        </button>
        </div>

        <div id="sys-status-body"<?= $statusInitiallyCollapsed ? ' hidden' : '' ?>>
            <div class="srv-grid">
                <?php foreach ($checks as $check): ?>
                <?php $st = $check['status'] ?? 'unknown'; ?>
                <div class="srv-card">
                    <div class="srv-card__header">
                        <span class="srv-card__name"><?= htmlspecialchars($check['label']) ?></span>
                        <span class="<?= SystemController::statusClass($st) ?>"><?= SystemController::statusLabel($st) ?></span>
                    </div>
                    <?php if (!empty($check['detail'])): ?>
                    <div class="srv-card__detail"><?= htmlspecialchars($check['detail']) ?></div>
                    <?php endif; ?>
                </div>
                <?php endforeach; ?>
            </div>

            <div class="sys-status-meta">
                <div>
                    <h3 class="srv-section-title srv-section-title--sub">Environnement PHP</h3>
                    <div class="php-grid php-grid--flush">
                        <?php foreach ($phpInfo as $key => $val): ?>
                        <div class="php-item">
                            <div class="php-item__key"><?= htmlspecialchars($key) ?></div>
                            <div class="php-item__val"><?= htmlspecialchars($val) ?></div>
                        </div>
                        <?php endforeach; ?>
                    </div>
                </div>
                <div>
                    <h3 class="srv-section-title srv-section-title--sub">Espace disque</h3>
                    <div class="disk-bar-wrap">
                        <div class="disk-bar" style="--disk-pct:<?= $diskPct ?>%;--disk-color:<?= $diskColor ?>"></div>
                    </div>
                    <div class="disk-stats">
                        <span><?= SystemController::humanBytes($diskUsed) ?> utilisé (<?= $diskPct ?>%)</span>
                        <span><?= SystemController::humanBytes($diskFree) ?> libre / <?= SystemController::humanBytes($diskTotal) ?></span>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- ── Tab bar ─────────────────────────────────────────────────────── -->
    <nav class="sys-tabs" aria-label="Journaux et configuration">
        <?php foreach (SystemController::LOG_FILES as $key => $def): ?>
        <a href="?tab=<?= htmlspecialchars($key) ?>&amp;n=<?= $selectedN ?>"
           class="sys-tab <?= $activeTab === $key ? 'active' : '' ?>"
           hx-get="/admin/system-fragment.php?tab=<?= htmlspecialchars($key) ?>&amp;n=<?= $selectedN ?>"
           hx-target="#sys-tab-panel"
           hx-push-url="?tab=<?= htmlspecialchars($key) ?>&amp;n=<?= $selectedN ?>"
           hx-swap="innerHTML"
           hx-indicator="#sys-tab-panel"
           data-tab="<?= htmlspecialchars($key) ?>"
           <?= $activeTab === $key ? 'aria-current="page"' : '' ?>>
            <?= htmlspecialchars($def['label']) ?>
        </a>
        <?php endforeach; ?>
        <a href="?tab=nginx_config"
           class="sys-tab <?= $activeTab === 'nginx_config' ? 'active' : '' ?>"
           hx-get="/admin/system-fragment.php?tab=nginx_config"
           hx-target="#sys-tab-panel"
           hx-push-url="?tab=nginx_config"
           hx-swap="innerHTML"
           hx-indicator="#sys-tab-panel"
           data-tab="nginx_config"
           <?= $activeTab === 'nginx_config' ? 'aria-current="page"' : '' ?>>nginx — config</a>
    </nav>

    <!-- Tab panel — content swapped by HTMX -->
    <div id="sys-tab-panel">

    <?php if ($activeTab === 'nginx_config'): ?>
        <?php include APP_ROOT . '/templates/admin/partials/system-nginx-config-panel.php'; ?>
    <?php else: ?>
        <?php include APP_ROOT . '/templates/admin/partials/system-log-panel.php'; ?>
    <?php endif; ?>

    </div><!-- #sys-tab-panel -->

</main>

<script>
function copyLogContent(btn) {
    var logOut = document.querySelector('#log-output');
    if (!logOut) return;
    var text = Array.from(logOut.querySelectorAll('.log-line'))
        .map(function(el){ return el.textContent; }).join('\n');
    if (navigator.clipboard && navigator.clipboard.writeText) {
        navigator.clipboard.writeText(text).then(function(){
            btn.textContent = '\u2713 Copi\u00e9';
            btn.classList.add('copied');
            setTimeout(function(){ btn.textContent = 'Copier'; btn.classList.remove('copied'); }, 2000);
        });
    } else {
        fallbackCopy(text, btn);
    }
}
function fallbackCopy(text, btn) {
    var ta = document.createElement('textarea');
    ta.value = text;
    ta.style.cssText = 'position:fixed;opacity:0';
    document.body.appendChild(ta); ta.select();
    try { document.execCommand('copy'); btn.textContent = '\u2713 Copi\u00e9'; btn.classList.add('copied');
        setTimeout(function(){ btn.textContent = 'Copier'; btn.classList.remove('copied'); }, 2000);
    } catch(e) {}
    document.body.removeChild(ta);
}
// Update active tab class after each HTMX swap on #sys-tab-panel
document.body.addEventListener('htmx:afterSwap', function(evt) {
    if (evt.detail.target && evt.detail.target.id === 'sys-tab-panel') {
        var rc = evt.detail.requestConfig;
        var tab = null;
        // Tab clicks carry ?tab=… in the path
        var qIdx = rc.path.indexOf('?');
        if (qIdx !== -1) {
            tab = new URLSearchParams(rc.path.substring(qIdx + 1)).get('tab');
        }
        // Line-count form sends tab via hx-vals in parameters
        if (!tab && rc.parameters && rc.parameters.tab) {
            tab = rc.parameters.tab;
        }
        if (tab) {
            document.querySelectorAll('.sys-tabs .sys-tab').forEach(function(a) {
                var isActive = a.getAttribute('data-tab') === tab;
                a.classList.toggle('active', isActive);
                if (isActive) a.setAttribute('aria-current', 'page');
                else a.removeAttribute('aria-current');
            });
        }
    }
});
</script>
