ligbox-ops-platform/index.html
Ligbox Spec Hub 3a2c64834b Initial import: ligbox-ops-platform + specs + LAPTOP + obsidian merge (CT130)
Source: VM122 /opt + obsidian-infra + LAPTOP
Hub: CT130 spec-hub 10.10.10.130
2026-06-19 17:26:41 +00:00

86 lines
3.7 KiB
HTML

<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Ligbox Ops — Support Desk</title>
<link rel="stylesheet" href="/assets/styles.css"/>
</head>
<body>
<div class="shell">
<aside class="sidebar">
<div class="brand">
<h1>Ligbox Ops</h1>
<p>Support Desk · Ibytera</p>
</div>
<nav class="nav">
<button type="button" data-view="dashboard" class="active">📊 Dashboard</button>
<button type="button" data-view="overview">🛡 Overview</button>
<button type="button" data-view="tickets">🎫 Tickets</button>
<button type="button" data-view="events">📡 Eventos</button>
<button type="button" data-view="tenants">🏢 Tenants</button>
<button type="button" data-view="infra">🖥 Infra</button>
</nav>
<div class="sidebar-footer">VM122 · ligbox-ops · MVP</div>
</aside>
<main class="main">
<header class="page-header">
<div>
<h2 id="page-title">Dashboard</h2>
<p>Operações Ligbox — onboarding, tickets e monitorização</p>
</div>
<div style="display:flex;gap:0.5rem;align-items:center;flex-wrap:wrap">
<span id="global-health" class="status-pill"></span>
<button type="button" class="btn btn-ghost" id="btn-refresh">Actualizar</button>
</div>
</header>
<section id="view-dashboard" class="view active">
<div id="dashboard-content"><p class="loading">A carregar…</p></div>
</section>
<section id="view-overview" class="view">
<div id="overview-content"><p class="loading">A carregar…</p></div>
<div id="scorecard-panel" class="card" style="display:none;margin-top:1rem"></div>
</section>
<section id="view-tickets" class="view">
<div class="toolbar">
<button type="button" class="filter-btn active" data-filter="all">Todos</button>
<button type="button" class="filter-btn" data-filter="open">Abertos</button>
<button type="button" class="filter-btn" data-filter="closed">Fechados</button>
<span class="toolbar-sep">|</span>
<button type="button" class="filter-btn active" data-source="all" data-kind="ticket">Todas origens</button>
<button type="button" class="filter-btn" data-source="vm112-onboard" data-kind="ticket">Onboard</button>
<button type="button" class="filter-btn" data-source="wazuh" data-kind="ticket">Wazuh</button>
</div>
<div class="grid-2">
<div id="ticket-list"><p class="loading">A carregar…</p></div>
<div id="ticket-detail">
<div class="card detail-panel"><p class="empty">Seleccione um ticket para ver detalhes</p></div>
</div>
</div>
</section>
<section id="view-events" class="view">
<div class="toolbar">
<button type="button" class="filter-btn active" data-source="all" data-kind="event">Todas origens</button>
<button type="button" class="filter-btn" data-source="vm112-onboard" data-kind="event">Onboard</button>
<button type="button" class="filter-btn" data-source="wazuh" data-kind="event">Wazuh</button>
</div>
<div id="events-content"><p class="loading">A carregar…</p></div>
</section>
<section id="view-tenants" class="view">
<div id="tenants-content"><p class="loading">A carregar…</p></div>
</section>
<section id="view-infra" class="view">
<div id="infra-content"><p class="loading">A carregar…</p></div>
</section>
</main>
</div>
<script src="/assets/app.js"></script>
</body>
</html>