First commit
This commit is contained in:
136
src/static/index.html
Normal file
136
src/static/index.html
Normal file
@@ -0,0 +1,136 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#0f0f1a" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<title>Lagomare Gates</title>
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
<link rel="icon" type="image/svg+xml" href="/static/logo.svg" />
|
||||
<link rel="apple-touch-icon" href="/static/logo.svg" />
|
||||
<link rel="stylesheet" href="/static/style.css" />
|
||||
|
||||
<style>
|
||||
/* ── Login view ──────────────────────────────────────────────────────── */
|
||||
#login-view {
|
||||
min-height: 100dvh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 1.5rem;
|
||||
}
|
||||
#login-view h1 {
|
||||
font-size: 1.6rem;
|
||||
font-weight: 800;
|
||||
margin-bottom: .25rem;
|
||||
letter-spacing: -.5px;
|
||||
}
|
||||
#login-view .subtitle {
|
||||
color: var(--text-muted);
|
||||
font-size: .9rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
#login-view .card { width: 100%; max-width: 380px; }
|
||||
#keypass-input {
|
||||
font-size: 1.4rem;
|
||||
font-family: monospace;
|
||||
letter-spacing: .15em;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
#keypass-input::placeholder { text-transform: none; letter-spacing: normal; font-size: 1rem; font-family: inherit; }
|
||||
|
||||
/* ── Gates view ──────────────────────────────────────────────────────── */
|
||||
#gates-view {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100dvh;
|
||||
}
|
||||
.app-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 1rem 1.25rem;
|
||||
background: var(--surface);
|
||||
border-bottom: 1px solid var(--border);
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 10;
|
||||
}
|
||||
.app-header h2 { font-size: 1.1rem; font-weight: 800; }
|
||||
.app-header .sub { color: var(--text-muted); font-size: .8rem; }
|
||||
|
||||
#gates-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
||||
gap: 1rem;
|
||||
padding: 1.25rem;
|
||||
flex: 1;
|
||||
}
|
||||
/* ── Loading state ───────────────────────────────────────────────────── */
|
||||
#loading-gates {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- ── Login view ──────────────────────────────────────────────────────── -->
|
||||
<div id="login-view">
|
||||
<img src="/static/logo.svg" alt="Lagomare" style="width:72px;height:72px;object-fit:contain;margin-bottom:.5rem" />
|
||||
<h1>Lagomare Gates</h1>
|
||||
<p class="subtitle">Enter your keypass to continue</p>
|
||||
<div class="card">
|
||||
<form id="login-form">
|
||||
<div class="field">
|
||||
<label for="keypass-input">Keypass</label>
|
||||
<input
|
||||
id="keypass-input"
|
||||
type="text"
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="characters"
|
||||
spellcheck="false"
|
||||
placeholder="Enter keypass…"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
<p id="login-error" class="error-msg hidden"></p>
|
||||
<button id="login-btn" type="submit" class="btn btn-primary btn-full" style="margin-top:.25rem">
|
||||
Access
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ── Gates view ──────────────────────────────────────────────────────── -->
|
||||
<div id="gates-view" class="hidden">
|
||||
<header class="app-header">
|
||||
<div style="display:flex;align-items:center;gap:.6rem">
|
||||
<img src="/static/logo.svg" alt="" style="width:32px;height:32px;object-fit:contain" />
|
||||
<div>
|
||||
<div class="app-header h2">Lagomare Gates</div>
|
||||
<div class="sub">Select a gate to open</div>
|
||||
</div>
|
||||
</div>
|
||||
<button id="logout-btn" class="btn btn-ghost" style="font-size:.85rem;padding:.5rem 1rem">
|
||||
Logout
|
||||
</button>
|
||||
</header>
|
||||
<div id="loading-gates">Loading gates…</div>
|
||||
<div id="gates-grid" class="hidden"></div>
|
||||
</div>
|
||||
|
||||
<!-- ── Toast ───────────────────────────────────────────────────────────── -->
|
||||
<div id="toast" class="toast hidden" aria-live="assertive"></div>
|
||||
|
||||
<script src="/static/app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user