feat: initial Minipaste
- MinIO-backed paste storage with 8-char base62 IDs - Paste expiry (1m, 1h, 1d, 1w, never) stored in object metadata - Raw plain-text endpoint at /raw/:id - Syntax highlighting in editor and paste view via highlight.js - In-editor highlight overlay with live language switching - Download button with correct file extension per language - Auto-redirect to paste after creation
This commit is contained in:
72
src/public/index.html
Normal file
72
src/public/index.html
Normal file
@@ -0,0 +1,72 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Minipaste — New Paste</title>
|
||||
<link rel="stylesheet" href="/style.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/github-dark.min.css" />
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<a href="/" class="logo">Minipaste</a>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<div class="editor-card">
|
||||
<div class="toolbar">
|
||||
<select id="lang-select" title="Language">
|
||||
<option value="">Plain Text</option>
|
||||
<option value="bash">Bash</option>
|
||||
<option value="c">C</option>
|
||||
<option value="cpp">C++</option>
|
||||
<option value="css">CSS</option>
|
||||
<option value="go">Go</option>
|
||||
<option value="html">HTML</option>
|
||||
<option value="java">Java</option>
|
||||
<option value="javascript">JavaScript</option>
|
||||
<option value="json">JSON</option>
|
||||
<option value="python">Python</option>
|
||||
<option value="rust">Rust</option>
|
||||
<option value="sql">SQL</option>
|
||||
<option value="toml">TOML</option>
|
||||
<option value="typescript">TypeScript</option>
|
||||
<option value="xml">XML</option>
|
||||
<option value="yaml">YAML</option>
|
||||
</select>
|
||||
|
||||
<select id="expiry-select" title="Expiry">
|
||||
<option value="never">Never Expire</option>
|
||||
<option value="1m">Expires in 1 Minute (test)</option>
|
||||
<option value="1h">Expires in 1 Hour</option>
|
||||
<option value="1d">Expires in 1 Day</option>
|
||||
<option value="1w">Expires in 1 Week</option>
|
||||
</select>
|
||||
|
||||
<span id="char-count" class="char-count">0 / 102,400 bytes</span>
|
||||
|
||||
<button id="submit-btn" type="button">Create Paste</button>
|
||||
</div>
|
||||
|
||||
<div class="editor-body">
|
||||
<div class="line-numbers" id="line-numbers" aria-hidden="true">1</div>
|
||||
<div class="editor-stack">
|
||||
<pre id="editor-highlight" aria-hidden="true"><code id="editor-highlight-code"></code></pre>
|
||||
<textarea
|
||||
id="content"
|
||||
placeholder="Paste your text here..."
|
||||
spellcheck="false"
|
||||
autocomplete="off"
|
||||
autofocus
|
||||
></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="error-box" class="error-box hidden"></div>
|
||||
</main>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/highlight.min.js"></script>
|
||||
<script src="/app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user