Files
UmbraTrans/web/uadmin/index.html
2026-09-26 07:57:11 -07:00

100 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="UmbraTrans administration and management">
<title>Control panel · UmbraTrans</title>
<link rel="icon" type="image/jpeg" href="../assets/umbratrans-icon.jpg">
<link rel="stylesheet" href="../assets/styles.css">
</head>
<body class="admin-page">
<div class="admin-shell">
<header class="admin-topbar">
<a class="brand-lockup" href="../index.html"><img class="brand-image" src="../assets/umbratrans-icon.jpg" alt="" aria-hidden="true"><span>UmbraTrans</span></a>
<div class="admin-context"><span class="status-pill status-pill--info">Control panel</span><span class="admin-context-name">System administration</span></div>
<div class="admin-top-actions"><span class="admin-user"><span class="avatar avatar--admin">OP</span> Operator</span><a class="admin-exit" href="../index.html">Exit admin ↗</a></div>
</header>
<div class="admin-layout">
<aside class="admin-sidebar" aria-label="Administration navigation">
<div class="admin-nav-label">Overview</div>
<a class="admin-nav-link admin-nav-link--active" href="#dashboard"><span>▦</span>Dashboard</a>
<a class="admin-nav-link" href="#accounts"><span>♙</span>Accounts</a>
<a class="admin-nav-link" href="#projects"><span>◈</span>Projects</a>
<div class="admin-nav-label admin-nav-label--spaced">Operations</div>
<a class="admin-nav-link" href="#maintenance"><span>⚙</span>Maintenance</a>
<a class="admin-nav-link" href="#statistics"><span>⌁</span>Statistics</a>
<a class="admin-nav-link" href="#audit"><span>≡</span>Audit log</a>
<div class="admin-sidebar-footer"><span class="status-dot status-dot--good"></span> Prototype environment<br><small>No production data connected</small></div>
</aside>
<main class="admin-main" id="dashboard">
<div class="admin-banner"><strong>Prototype control panel</strong><span>Buttons demonstrate the intended management flow. No accounts, passwords, or database records are changed.</span></div>
<section class="admin-heading">
<div><p class="eyebrow">Administration</p><h1>System overview</h1><p>Manage identities, project access, maintenance, and service health.</p></div>
<button class="button button--primary" id="open-account-modal">+ Provision account</button>
</section>
<section class="admin-stat-grid" aria-label="System statistics">
<article class="admin-stat"><span class="admin-stat-label">Active users</span><strong>24</strong><small><span class="trend-up">↑ 3</span> this month</small></article>
<article class="admin-stat"><span class="admin-stat-label">Organizations</span><strong>3</strong><small>2 active · 1 pending</small></article>
<article class="admin-stat"><span class="admin-stat-label">Projects</span><strong>11</strong><small><span class="trend-up">↑ 2</span> in production</small></article>
<article class="admin-stat"><span class="admin-stat-label">Worker health</span><strong class="health-value"><span class="status-dot status-dot--good"></span>Good</strong><small>Last check 2 min ago</small></article>
</section>
<div class="admin-columns">
<section class="admin-card" id="accounts">
<div class="admin-card-heading"><div><p class="eyebrow">Identity</p><h2>Accounts</h2></div><button class="admin-text-button" data-demo-action="Account filtering is not connected in the prototype">View all →</button></div>
<div class="admin-table-wrap"><table class="admin-table"><thead><tr><th>User</th><th>Organization</th><th>Role</th><th>Status</th><th>Last activity</th></tr></thead><tbody>
<tr><td><div class="table-user"><span class="avatar avatar--small avatar--violet">AM</span><span><strong>Alex Morgan</strong><small>alex@example.com</small></span></div></td><td>Northstar Media</td><td>Project manager</td><td><span class="status-pill status-pill--success">Active</span></td><td>4 min ago</td></tr>
<tr><td><div class="table-user"><span class="avatar avatar--small avatar--blue">SK</span><span><strong>Sam Kline</strong><small>sam@example.com</small></span></div></td><td>Northstar Media</td><td>Translator</td><td><span class="status-pill status-pill--info">MFA enabled</span></td><td>18 min ago</td></tr>
<tr><td><div class="table-user"><span class="avatar avatar--small avatar--amber">JR</span><span><strong>Jamie Reed</strong><small>jamie@example.com</small></span></div></td><td>Harbor House</td><td>Audio director</td><td><span class="status-pill status-pill--warning">Temp password</span></td><td>Never</td></tr>
<tr><td><div class="table-user"><span class="avatar avatar--small avatar--rose">TP</span><span><strong>Taylor Price</strong><small>taylor@example.com</small></span></div></td><td>Harbor House</td><td>Viewer</td><td><span class="status-pill status-pill--muted">Invited</span></td><td>Never</td></tr>
</tbody></table></div>
</section>
<section class="admin-card" id="projects">
<div class="admin-card-heading"><div><p class="eyebrow">Tenancy</p><h2>Projects</h2></div><button class="admin-text-button" data-demo-action="Project management is not connected in the prototype">Manage →</button></div>
<div class="admin-project-list">
<div class="admin-project-row"><span class="project-mark project-mark--purple">DH</span><div><strong>Deal Hunter</strong><small>Northstar Media · 4 locales</small></div><span class="status-pill status-pill--warning">Audio in progress</span></div>
<div class="admin-project-row"><span class="project-mark project-mark--blue">TI</span><div><strong>Treasure Island</strong><small>Northstar Media · 2 locales</small></div><span class="status-pill status-pill--success">Ready for review</span></div>
<div class="admin-project-row"><span class="project-mark project-mark--teal">LD</span><div><strong>Last Dwarf</strong><small>Harbor House · 1 locale</small></div><span class="status-pill status-pill--muted">Draft</span></div>
</div>
</section>
</div>
<section class="admin-card admin-card--maintenance" id="maintenance">
<div class="admin-card-heading"><div><p class="eyebrow">Operations</p><h2>Maintenance</h2></div><span class="status-pill status-pill--success">All systems nominal</span></div>
<div class="maintenance-grid">
<div class="maintenance-item"><span class="maintenance-icon maintenance-icon--green">✓</span><div><strong>Audio workers</strong><small>3 online · 0 stalled</small></div><button class="admin-text-button" data-demo-action="Worker controls are not connected in the prototype">Inspect</button></div>
<div class="maintenance-item"><span class="maintenance-icon maintenance-icon--purple">↻</span><div><strong>Background jobs</strong><small>42 queued · 3 retrying</small></div><button class="admin-text-button" data-demo-action="Queue controls are not connected in the prototype">Inspect</button></div>
<div class="maintenance-item"><span class="maintenance-icon maintenance-icon--blue">◫</span><div><strong>Storage</strong><small>Object storage connected</small></div><button class="admin-text-button" data-demo-action="Storage controls are not connected in the prototype">Inspect</button></div>
<div class="maintenance-item"><span class="maintenance-icon maintenance-icon--amber">!</span><div><strong>Password policy</strong><small>2 temporary accounts pending first login</small></div><button class="admin-text-button" data-demo-action="Account policy is not connected in the prototype">Review</button></div>
</div>
</section>
<section class="admin-columns admin-columns--lower" id="statistics">
<section class="admin-card"><div class="admin-card-heading"><div><p class="eyebrow">Usage</p><h2>Production activity</h2></div><span class="muted-label">Last 30 days</span></div><div class="admin-chart-placeholder"><div class="chart-bars"><i style="height:38%"></i><i style="height:52%"></i><i style="height:46%"></i><i style="height:68%"></i><i style="height:58%"></i><i style="height:82%"></i><i style="height:72%"></i><i style="height:94%"></i><i style="height:78%"></i><i style="height:88%"></i><i style="height:64%"></i><i style="height:76%"></i></div><div class="chart-axis"><span>Aug 26</span><span>Sep 09</span><span>Sep 26</span></div></div></section>
<section class="admin-card" id="audit"><div class="admin-card-heading"><div><p class="eyebrow">Traceability</p><h2>Recent audit events</h2></div><button class="admin-text-button" data-demo-action="Audit export is not connected in the prototype">Export →</button></div><div class="audit-list"><div><span class="audit-dot audit-dot--purple"></span><p><strong>Project access updated</strong><small>Alex Morgan · 4 min ago</small></p></div><div><span class="audit-dot audit-dot--blue"></span><p><strong>Translation batch approved</strong><small>Sam Kline · 18 min ago</small></p></div><div><span class="audit-dot audit-dot--amber"></span><p><strong>Temporary account provisioned</strong><small>Operator · 1 hr ago</small></p></div></div></section>
</section>
</main>
</div>
</div>
<div class="modal-backdrop" id="account-modal" hidden>
<section class="modal" role="dialog" aria-modal="true" aria-labelledby="account-modal-title">
<div class="modal-heading"><div><p class="eyebrow">Identity</p><h2 id="account-modal-title">Provision an account</h2></div><button class="modal-close" id="close-account-modal" aria-label="Close">×</button></div>
<div class="modal-notice"><strong>Prototype only.</strong> A real implementation would issue either a one-time temporary password or an OIDC enrollment invitation. The temporary password is never displayed again and must be changed at first login.</div>
<form id="account-form" class="stack-form">
<label for="account-name">Full name</label><input id="account-name" type="text" placeholder="Taylor Price" required>
<label for="account-email">Email address</label><input id="account-email" type="email" placeholder="taylor@example.com" required>
<label for="account-org">Organization</label><select id="account-org"><option>Northstar Media</option><option>Harbor House</option></select>
<label for="account-role">Initial role</label><select id="account-role"><option>Viewer</option><option>Translator</option><option>Audio director</option><option>Project manager</option></select>
<label class="checkbox-row"><input id="oidc-enrollment" type="checkbox"> Use OIDC enrollment instead of a temporary password</label>
<div class="modal-actions"><button type="button" class="button button--ghost" id="cancel-account-modal">Cancel</button><button type="submit" class="button button--primary">Create prototype account</button></div>
</form>
</section>
</div>
<div id="toast" class="toast" role="status" aria-live="polite"></div>
<script src="../assets/admin.js"></script>
</body>
</html>