Files
epaper-dashboard/templates/design_a_dark_minimal.html
T

309 lines
8.7 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="de">
<head>
<meta charset="utf-8">
<title>epaper admin — Dark Minimal</title>
<style>
/* ============================================================
DESIGN A: Dark Minimal
Inspiriert von: Linear, Vercel — fast whitespace, hauchdünne
Linien, viel Ruhe. Nur Akzentfarbe, keine Vignetten.
============================================================ */
:root {
--bg: #0a0a0e;
--surface: #111116;
--surface-2: #18181f;
--border: #1e1e28;
--border-light: #2a2a38;
--fg: #e8e8ed;
--fg-muted: #707080;
--fg-dim: #404050;
--accent: #7c85ff;
--ok: #4ade80;
--warn: #fbbf24;
--alert: #f87171;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
background: var(--bg);
color: var(--fg);
line-height: 1.5;
-webkit-font-smoothing: antialiased;
}
/* --- Header --- */
header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 28px 40px;
border-bottom: 1px solid var(--border);
}
.logo {
font-size: 0.85em;
font-weight: 600;
letter-spacing: 0.05em;
text-transform: uppercase;
color: var(--fg);
}
.logo span { color: var(--accent); }
.header-right { display: flex; gap: 12px; align-items: center; }
/* --- Main --- */
.main { max-width: 1200px; margin: 0 auto; padding: 32px 40px 80px; }
/* --- Section title --- */
h2 {
font-size: 0.72em;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--fg-muted);
margin-bottom: 16px;
padding-bottom: 10px;
border-bottom: 1px solid var(--border);
}
/* --- Grid Editor --- */
.toolbar {
display: flex;
gap: 8px;
align-items: center;
margin-bottom: 20px;
}
.add-group {
display: flex;
gap: 6px;
align-items: center;
background: var(--surface);
border: 1px solid var(--border);
border-radius: 6px;
padding: 4px 4px 4px 10px;
}
.add-group select, .add-group input {
background: transparent;
border: none;
color: var(--fg);
font-size: 0.85em;
padding: 4px 6px;
}
.add-group select:focus, .add-group input:focus { outline: none; }
.grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(4, 100px);
gap: 8px;
background: var(--border);
padding: 8px;
border-radius: 8px;
margin-bottom: 24px;
}
.cell {
background: var(--surface);
border-radius: 4px;
overflow: hidden;
position: relative;
}
.item {
width: 100%;
height: 100%;
background: var(--surface-2);
border: 1px solid var(--border-light);
border-radius: 4px;
padding: 10px;
display: flex;
flex-direction: column;
justify-content: space-between;
cursor: grab;
}
.item .name { font-size: 0.8em; font-weight: 500; }
.item .meta { font-size: 0.65em; color: var(--fg-muted); font-family: monospace; }
.item .controls {
display: flex;
gap: 4px;
opacity: 0;
transition: opacity 0.15s;
position: absolute;
top: 4px;
right: 4px;
}
.item:hover .controls { opacity: 1; }
.item .controls button {
background: var(--surface);
border: 1px solid var(--border-light);
color: var(--fg-muted);
border-radius: 3px;
padding: 1px 5px;
font-size: 0.65em;
cursor: pointer;
}
/* --- Cards --- */
.plugin-card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 6px;
padding: 16px 20px;
margin-bottom: 10px;
}
.plugin-card h3 {
font-size: 0.9em;
font-weight: 500;
margin-bottom: 4px;
}
.plugin-card .desc { font-size: 0.78em; color: var(--fg-muted); margin-bottom: 12px; }
.plugin-card .fields { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.field { display: flex; flex-direction: column; gap: 4px; }
.field label { font-size: 0.72em; color: var(--fg-muted); font-weight: 500; }
.field input, .field select {
background: var(--surface-2);
border: 1px solid var(--border);
color: var(--fg);
border-radius: 4px;
padding: 6px 8px;
font-size: 0.85em;
}
/* --- Buttons --- */
.btn {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 7px 12px;
border-radius: 5px;
border: 1px solid var(--border-light);
background: var(--surface);
color: var(--fg);
font-size: 0.82em;
cursor: pointer;
font-family: inherit;
}
.btn:hover { background: var(--surface-2); }
.btn.primary { background: var(--accent); border-color: var(--accent); color: #000; }
.btn.primary:hover { background: #6a75f0; }
.btn.danger { color: var(--alert); border-color: var(--alert); }
/* --- Preview --- */
.preview {
margin-top: 40px;
background: var(--surface);
border: 1px solid var(--border);
border-radius: 6px;
padding: 16px;
}
.preview img { width: 100%; border-radius: 4px; }
/* --- Layout status --- */
.status {
font-size: 0.78em;
color: var(--fg-muted);
margin-left: auto;
font-family: monospace;
}
</style>
</head>
<body>
<header>
<div class="logo">epaper<span>_</span>dashboard</div>
<div class="header-right">
<button class="btn">Refresh</button>
<button class="btn primary">Save</button>
</div>
</header>
<div class="main">
<h2>Layout — 4×4 Grid</h2>
<div class="toolbar">
<div class="add-group">
<select><option>clock</option><option>weather</option><option>system</option></select>
<button class="btn primary">+ Add</button>
</div>
<button class="btn">Auto-Pack</button>
<span class="status">4 items · OK</span>
</div>
<div class="grid">
<div class="cell item">
<div>
<div class="name">Clock</div>
<div class="meta">2×2 · (0,0)</div>
</div>
<div class="controls">
<button></button><button></button><button></button>
</div>
</div>
<div class="cell item">
<div>
<div class="name">Weather</div>
<div class="meta">2×2 · (2,0)</div>
</div>
<div class="controls">
<button></button><button></button><button></button>
</div>
</div>
<div class="cell" style="background: var(--border);"></div>
<div class="cell" style="background: var(--border);"></div>
<div class="cell item">
<div>
<div class="name">System</div>
<div class="meta">2×2 · (0,2)</div>
</div>
</div>
<div class="cell item">
<div>
<div class="name">Hello</div>
<div class="meta">2×2 · (2,2)</div>
</div>
</div>
<div class="cell" style="background: var(--border);"></div>
<div class="cell" style="background: var(--border);"></div>
<div class="cell" style="background: var(--border);"></div>
<div class="cell" style="background: var(--border);"></div>
<div class="cell" style="background: var(--border);"></div>
<div class="cell" style="background: var(--border);"></div>
<div class="cell" style="background: var(--border);"></div>
<div class="cell" style="background: var(--border);"></div>
<div class="cell" style="background: var(--border);"></div>
<div class="cell" style="background: var(--border);"></div>
</div>
<h2>Plugin Config</h2>
<div class="plugin-card">
<h3>Clock</h3>
<div class="desc">System time and date</div>
<div class="fields">
<div class="field">
<label>Timezone</label>
<input type="text" value="Europe/Berlin">
</div>
<div class="field">
<label>Format</label>
<select><option>24h</option><option>12h</option></select>
</div>
</div>
</div>
<div class="plugin-card">
<h3>Weather</h3>
<div class="desc">Open-Meteo — no API key needed</div>
<div class="fields">
<div class="field">
<label>Location (lat,lon)</label>
<input type="text" value="52.52,13.41">
</div>
<div class="field">
<label>Forecast hours</label>
<input type="number" value="4">
</div>
</div>
</div>
<h2>Live Preview</h2>
<div class="preview">
<img src="/snapshot.png">
</div>
</div>
</body>
</html>