This commit is contained in:
Ty Clifford
2026-06-30 11:14:42 -04:00
commit 0fe5a92f90
18 changed files with 4775 additions and 0 deletions
+67
View File
@@ -0,0 +1,67 @@
<?php
declare(strict_types=1);
require __DIR__ . '/../app/bootstrap.php';
app_db();
$pageTitle = 'Admin Dashboard | Neon Health Tracker';
$activePage = 'admin';
require __DIR__ . '/partials/site-header.php';
?>
<main>
<section class="admin-public-shell">
<div class="site-section-heading">
<p class="site-eyebrow">Admin dashboard</p>
<h1>Manage users and their profiles.</h1>
<p>Use an active admin profile to create users, update profile details, assign roles, activate or deactivate accounts, and remove users.</p>
</div>
<div class="admin-access-row">
<label class="site-field">
<span>Acting profile</span>
<select id="adminProfileSelect"></select>
</label>
<a class="site-secondary" href="/tracker.php">Open tracker</a>
</div>
<div class="admin-denied" id="adminDenied" hidden>
<h2>Admin access required</h2>
<p>Select an active admin profile to manage users. The first user in the database is automatically promoted to admin.</p>
</div>
<section class="admin-panel site-admin-panel" id="adminPanel" hidden>
<div class="admin-stats" id="adminStats"></div>
<div class="admin-layout">
<div class="admin-user-list" id="adminUserList"></div>
<form class="admin-editor" id="adminUserForm">
<input type="hidden" name="target_user_id">
<div class="panel-heading">
<div>
<p class="site-eyebrow">Profile editor</p>
<h2 id="adminUserFormTitle">Create Profile</h2>
</div>
<button class="text-button" type="button" id="clearAdminUserFormButton">Clear</button>
</div>
<div class="form-grid two">
<label class="field"><span>Name</span><input name="name" required></label>
<label class="field"><span>Email</span><input name="email" type="email"></label>
<label class="field"><span>Role</span><select name="role"><option value="member">member</option><option value="admin">admin</option></select></label>
<label class="field"><span>Status</span><select name="status"><option value="active">active</option><option value="inactive">inactive</option></select></label>
<label class="field"><span>Phone</span><input name="phone" type="tel"></label>
<label class="field"><span>Birthday</span><input name="birthday" type="date"></label>
<label class="field"><span>Height in</span><input name="height_in" type="number" min="0" step="0.5"></label>
<label class="field"><span>Training level</span><select name="training_level"><option></option><option>Beginner</option><option>Intermediate</option><option>Advanced</option><option>Competitive</option></select></label>
<label class="field"><span>Theme</span><select name="theme_mode"><option>dark</option><option>light</option></select></label>
<label class="field"><span>Accent</span><select name="theme_accent"><option>green</option><option>blue</option><option>red</option><option>pink</option><option>orange</option></select></label>
<label class="field wide"><span>Fitness focus</span><input name="fitness_focus" placeholder="Strength, endurance, recovery"></label>
<label class="field wide"><span>Emergency contact</span><input name="emergency_contact" placeholder="Name and phone"></label>
</div>
<button class="site-primary full" type="submit">Save profile</button>
</form>
</div>
</section>
</section>
</main>
<div class="site-toast" id="siteToast" role="status" aria-live="polite"></div>
<script src="/assets/admin.js" defer></script>
<?php require __DIR__ . '/partials/site-footer.php'; ?>