Files
2026-04-02 16:05:40 +03:00

148 lines
5.4 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>dropLake</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link rel="stylesheet" href="/static/css/style.css" />
</head>
<body>
<div class="container">
<!-- Logo -->
<div class="logo">
<div class="logo-mark"></div>
<h1>drop<span class="grad">Lake</span></h1>
<p>Encrypted &nbsp;·&nbsp; Ephemeral &nbsp;·&nbsp; No accounts</p>
</div>
<!-- Card -->
<div class="card">
<!-- ═══════════════════════════════════════
VIEW 1 — Upload form
═══════════════════════════════════════ -->
<div id="formView">
<!-- Tabs -->
<div class="tabs">
<button class="tab-btn active" data-tab="file">File</button>
<button class="tab-btn" data-tab="text">Text</button>
</div>
<!-- File tab -->
<div id="tab-file" class="tab-content active">
<div class="drop-zone" id="dropZone">
<input type="file" id="fileInput" tabindex="-1" />
<span class="dz-icon" id="dzIcon">📂</span>
<div class="dz-main" id="dzMain">Drop a file or click to browse</div>
<div class="dz-hint" id="dzHint">1 GB recommended &nbsp;·&nbsp; up to 6 GB accepted</div>
<div class="dz-name" id="dzName"></div>
<div class="dz-size" id="dzSize"></div>
</div>
</div>
<!-- Text tab -->
<div id="tab-text" class="tab-content">
<div class="field">
<label for="textArea">Your text</label>
<textarea id="textArea" placeholder="Paste or type anything here…"></textarea>
</div>
</div>
<!-- Options -->
<div class="field-row">
<div class="field">
<label for="ttlSelect">Expires in</label>
<select id="ttlSelect">
<option value="1">1 hour</option>
<option value="6">6 hours</option>
<option value="24" selected>24 hours</option>
<option value="48">2 days</option>
<option value="72">3 days</option>
</select>
</div>
<div class="field">
<label for="passwordInput">Password <span style="font-weight:400;text-transform:none;letter-spacing:0">(optional)</span></label>
<input id="passwordInput" type="password"
placeholder="Leave blank for URL-only access"
autocomplete="new-password" />
</div>
</div>
<div class="toggle-field">
<label class="toggle-switch">
<input type="checkbox" id="burnToggle" />
<span class="toggle-track"></span>
</label>
<label class="toggle-label" for="burnToggle">Delete after first download</label>
</div>
<!-- Alert (errors) -->
<div id="alertBox" class="alert hidden"></div>
<!-- Upload button -->
<button class="btn" id="uploadBtn">Upload &amp; Encrypt</button>
<!-- Progress -->
<div id="progressWrap" class="progress-wrap mt-2 hidden">
<div class="progress-bar">
<div class="progress-fill" id="progressFill"></div>
</div>
<div class="progress-label" id="progressLbl"></div>
</div>
</div><!-- #formView -->
<!-- ═══════════════════════════════════════
VIEW 2 — Result
═══════════════════════════════════════ -->
<div id="resultView" class="hidden">
<!-- Animated checkmark -->
<div class="success-icon">
<svg viewBox="0 0 52 52">
<circle class="check-circle" cx="26" cy="26" r="24" />
<path class="check-mark" d="M14 26l8 8 16-16" />
</svg>
</div>
<div class="result-title">Share ready</div>
<div class="result-subtitle">Save the link — the decryption key lives only in the URL</div>
<div class="result-label">Share link</div>
<div class="copy-field">
<input id="resultUrl" type="text" readonly />
<button class="copy-btn" id="copyUrlBtn">Copy</button>
</div>
<div id="resultPwWrap" class="hidden">
<div class="result-label mt-1">Password</div>
<div class="copy-field">
<input id="resultPw" type="text" readonly />
<button class="copy-btn" id="copyPwBtn">Copy</button>
</div>
</div>
<div class="alert alert-info mt-1" style="font-size:0.78rem;margin-bottom:0.75rem">
The decryption key is only in this URL and is never stored on the server.
</div>
<button class="share-again-btn" id="shareAgainBtn">+ Share another</button>
</div><!-- #resultView -->
</div><!-- .card -->
</div><!-- .container -->
<footer>
dropLake<span class="sep">·</span>self-hosted<span class="sep">·</span>no tracking
</footer>
<script src="/static/js/upload.js"></script>
</body>
</html>