Files
captionninja/room.html

91 lines
4.6 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="stylesheet" href="/caption-local/theme.css" />
<title>Caption Admin Room</title>
<style>
:root { color-scheme: dark; --accent:#2498Eb; --bg:#0f1420; --panel:#172338; --line:#2c3c58; --text:#eef3fb; --muted:#9fb0cb; }
* { box-sizing:border-box; }
body { margin:0; padding:0 16px 48px; background:var(--bg); color:var(--text); font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif; }
.wrap { max-width:820px; margin:0 auto; }
header { padding:32px 0 8px; }
h1 { margin:0 0 6px; }
#roomName { font-size:clamp(2rem, 6vw, 2.8rem); line-height:1.1; overflow-wrap:anywhere; }
h2 { font-size:18px; margin:0 0 12px; }
p { color:var(--muted); }
.eyebrow { text-transform:uppercase; letter-spacing:.12em; font-size:.78rem; font-weight:700; color:var(--accent); margin:0 0 4px; }
.status-grid { display:flex; flex-wrap:wrap; gap:8px 22px; margin-top:10px; }
.panel { background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:20px; margin-top:16px; }
.row { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:12px; }
.btn { font:inherit; cursor:pointer; padding:9px 14px; border-radius:8px; border:1px solid var(--line); background:#0c111c; color:var(--text); text-decoration:none; }
.btn:hover { border-color:var(--accent); }
.btn.primary { background:var(--accent); border-color:var(--accent); color:#041018; font-weight:600; }
.btn.danger { border-color:#9b4a4a; color:#ffd7d7; }
code { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; background:#0c111c; border:1px solid var(--line); border-radius:4px; padding:1px 6px; overflow-wrap:anywhere; }
label { display:block; margin:12px 0 4px; }
input { width:100%; padding:9px; font:inherit; border-radius:6px; border:1px solid var(--line); background:#0c111c; color:var(--text); }
.error { color:#ffd7d7; }
@media (max-width:560px){ .row .btn{ width:100%; text-align:center; } }
</style>
</head>
<body>
<nav class="cc-room-menu" data-current="admin" aria-label="Caption room workflow" hidden></nav>
<div class="wrap">
<header>
<p class="eyebrow">Caption Admin Room</p>
<h1 id="roomName">Caption Admin Room</h1>
<p>Keep the admin link private. Share the public audience link with viewers and OBS.</p>
<div class="status-grid">
<p class="cc-status-row"><span id="roomDot" class="cc-dot" data-state="warn" aria-label="Checking room"></span><span id="roomStatus" role="status">Checking room…</span></p>
<p class="cc-status-row"><span id="serviceDot" class="cc-dot" data-state="warn" aria-label="Checking service"></span><span id="serviceStatus" role="status">Checking service…</span></p>
</div>
</header>
<section class="panel" id="loading"><p>Checking this room…</p></section>
<section class="panel" id="denied" hidden>
<h2>Admin link required</h2>
<p id="deniedText">Open this room with its admin link to manage it.</p>
<div class="row"><a class="btn" href="/">Back to start</a></div>
</section>
<section class="panel" id="room" hidden>
<h2>Admin room details</h2>
<p>Admin room ID: <code id="roomId"></code></p>
<p>Created: <span id="created"></span></p>
<div class="row">
<a class="btn primary" id="captureLink" target="_blank" rel="noopener noreferrer">Start captioning</a>
<a class="btn" id="editorLink" target="_blank" rel="noopener noreferrer">Open caption editor</a>
<a class="btn" id="audienceLink" target="_blank" rel="noopener noreferrer">Open audience overlay</a>
</div>
<label for="adminLink">Private admin link</label>
<div class="row">
<code id="adminLink">Not available in this tab — create a fresh link below.</code>
<button class="btn" id="copyAdmin" type="button">Copy admin link</button>
</div>
<p>Anyone with this link can caption, edit and close the room. It stays valid until you replace it or close the room.</p>
<label for="audienceLinkText">Public audience link</label>
<div class="row">
<code id="audienceLinkText"></code>
<button class="btn" id="copyAudience" type="button">Copy audience link</button>
</div>
<div class="row">
<button class="btn" id="rotate" type="button">Create fresh admin link</button>
<button class="btn danger" id="close" type="button">Close admin room</button>
</div>
<p id="result" role="status"></p>
</section>
</div>
<script src="/caption-local/caption-status.js"></script>
<script src="/caption-local/caption-room-menu.js"></script>
<script src="/room.js"></script>
</body>
</html>