100 lines
4.0 KiB
Plaintext
100 lines
4.0 KiB
Plaintext
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>@ViewData["Title"] — Scratching Post</title>
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" />
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet" />
|
|
<link href="/css/admin.css" rel="stylesheet" />
|
|
<script>
|
|
(function() {
|
|
var t = localStorage.getItem('sb-theme') || 'light';
|
|
document.documentElement.setAttribute('data-theme', t);
|
|
})();
|
|
</script>
|
|
@RenderSection("Styles", required: false)
|
|
</head>
|
|
<body>
|
|
<div class="admin-wrapper">
|
|
<nav class="admin-sidebar">
|
|
<div class="sidebar-brand">
|
|
<i class="bi bi-sun"></i>
|
|
<span>Sunbeam</span>
|
|
</div>
|
|
<div class="sidebar-subtitle">Scratching Post Admin</div>
|
|
|
|
<ul class="sidebar-nav">
|
|
<li>
|
|
<a href="/admin" class="@(ViewContext.RouteData.Values["controller"]?.ToString() == "Admin" ? "active" : "")">
|
|
<i class="bi bi-speedometer2"></i>
|
|
<span>Dashboard</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="/admin/slides" class="@(ViewContext.RouteData.Values["controller"]?.ToString() == "Slides" ? "active" : "")">
|
|
<i class="bi bi-layers"></i>
|
|
<span>Meows</span>
|
|
<small class="nav-hint">Slides</small>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="/admin/devices" class="@(ViewContext.RouteData.Values["controller"]?.ToString() == "Devices" ? "active" : "")">
|
|
<i class="bi bi-display"></i>
|
|
<span>Posts</span>
|
|
<small class="nav-hint">Devices</small>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
|
|
<div class="sidebar-footer">
|
|
<div>
|
|
<small>Sunbeam v1.0</small><br />
|
|
<small style="opacity:0.5;">© Jess Rogerson — 2026</small>
|
|
</div>
|
|
<div class="d-flex gap-1">
|
|
<button id="themeToggle" class="theme-toggle" title="Toggle theme">
|
|
<i class="bi bi-moon-stars"></i>
|
|
</button>
|
|
<a href="/account/logout" class="theme-toggle" title="Sign Out">
|
|
<i class="bi bi-box-arrow-right"></i>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<main class="admin-main">
|
|
<header class="admin-header">
|
|
<h1>@ViewData["Title"]</h1>
|
|
<div class="header-actions">
|
|
@RenderSection("HeaderActions", required: false)
|
|
</div>
|
|
</header>
|
|
|
|
@if (TempData["Success"] != null)
|
|
{
|
|
<div class="alert alert-success alert-dismissible fade show mx-4 mt-3" role="alert">
|
|
<i class="bi bi-check-circle me-2"></i>@TempData["Success"]
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
|
</div>
|
|
}
|
|
@if (TempData["Error"] != null)
|
|
{
|
|
<div class="alert alert-danger alert-dismissible fade show mx-4 mt-3" role="alert">
|
|
<i class="bi bi-exclamation-triangle me-2"></i>@TempData["Error"]
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
|
</div>
|
|
}
|
|
|
|
<div class="admin-content">
|
|
@RenderBody()
|
|
</div>
|
|
</main>
|
|
</div>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
|
<script src="/js/admin.js"></script>
|
|
@RenderSection("Scripts", required: false)
|
|
</body>
|
|
</html>
|