Files
EonaCat.LogStack/EonaCat.LogStack.Status/Pages/Shared/_Layout.cshtml
EonaCat 977374ce02 Added EonaCat.LogStack.Status
Updated EonaCat.LogStack.LogClient to support EonaCat.LogStack.Status
2026-03-12 21:15:33 +01:00

117 lines
5.0 KiB
Plaintext

<!--
This file is part of the EonaCat project(s) which is released under the Apache License.
See the LICENSE file or go to https://EonaCat.com/License for full license details.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] — Status</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=DM+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="~/css/site.css" />
@RenderSection("Styles", required: false)
</head>
<body>
<div class="app-shell">
<nav class="sidebar" id="sidebar">
<div class="sidebar-header">
<div class="logo">
<span class="logo-icon">◈</span>
<span class="logo-text">EonaCat LogStack<br /><strong>Status</strong></span>
</div>
<button class="sidebar-toggle" onclick="toggleSidebar()">⟨</button>
</div>
<div class="nav-section">
<span class="nav-label">MONITORING</span>
<a href="/" class="nav-item @(ViewData["Page"]?.ToString() == "dashboard" ? "active" : "")">
<span class="nav-icon">⬡</span> Dashboard
<span class="status-dot" id="overall-dot"></span>
</a>
<a href="/monitors" class="nav-item @(ViewData["Page"]?.ToString() == "monitors" ? "active" : "")">
<span class="nav-icon">◎</span> Monitors
</a>
<a href="/certificates" class="nav-item @(ViewData["Page"]?.ToString() == "certs" ? "active" : "")">
<span class="nav-icon">◧</span> Certificates
</a>
</div>
@if (Context.Session.GetString("IsAdmin") == "true")
{
<div class="nav-section">
<span class="nav-label">ANALYTICS</span>
<a href="/logs" class="nav-item @(ViewData["Page"]?.ToString() == "logs" ? "active" : "")">
<span class="nav-icon">▦</span> Log Stream
</a>
</div>
<div class="nav-section">
<span class="nav-label">ADMIN</span>
<a href="/admin/monitors" class="nav-item @(ViewData["Page"]?.ToString() == "admin-monitors" ? "active" : "")">
<span class="nav-icon">⊞</span> Manage Monitors
</a>
<a href="/admin/certificates" class="nav-item @(ViewData["Page"]?.ToString() == "admin-certs" ? "active" : "")">
<span class="nav-icon">⊟</span> Manage Certificates
</a>
<a href="/admin/settings" class="nav-item @(ViewData["Page"]?.ToString() == "admin-settings" ? "active" : "")">
<span class="nav-icon">◈</span> Settings
</a>
<a href="/admin/ingest" class="nav-item @(ViewData["Page"]?.ToString() == "admin-ingest" ? "active" : "")">
<span class="nav-icon">⊕</span> Log Ingest
</a>
</div>
<div class="nav-section">
<a href="/admin/logout" class="nav-item nav-item--danger">
<span class="nav-icon">⊘</span> Logout
</a>
</div>
}
else
{
<div class="nav-section" style="margin-top:auto">
<a href="/admin/login" class="nav-item">
<span class="nav-icon">⊛</span> Admin Login
</a>
</div>
}
<div class="sidebar-footer">
<span class="clock" id="clock">--:--:--</span>
</div>
</nav>
<main class="main-content">
<div class="topbar">
<div class="breadcrumb">@ViewData["Title"]</div>
<div class="topbar-right">
<div class="live-indicator">
<span class="pulse-dot"></span> LIVE
</div>
@if (Context.Session.GetString("IsAdmin") == "true")
{
<span class="admin-badge">ADMIN</span>
}
</div>
</div>
<div class="page-content">
@RenderBody()
</div>
<div class="page-footer">
&copy; @DateTime.Now.Year
<strong>
<a href="https://EonaCat.com" target="_blank">EonaCat (Jeroen Saey)</a>
</strong>
All rights reserved.
</div>
</main>
</div>
<script src="~/js/site.js"></script>
@RenderSection("Scripts", required: false)
</body>
</html>