Navidrome now-playing, clock, and weather for a Waveshare epd4in0e panel, with a local web UI and install/uninstall scripts for the Pi.
39 lines
1.7 KiB
HTML
39 lines
1.7 KiB
HTML
<!doctype html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Paperwall</title>
|
|
<style>
|
|
body { font-family: system-ui, sans-serif; max-width: 640px; margin: 2rem auto; padding: 0 1rem; color: #222; }
|
|
.brand { font-weight: 700; font-size: 1.1rem; margin-bottom: 1rem; }
|
|
nav { display: flex; gap: 1rem; margin-bottom: 1.5rem; font-size: 0.9rem; }
|
|
nav a { color: #444; text-decoration: none; }
|
|
nav a:hover { text-decoration: underline; }
|
|
h1 { font-size: 1.3rem; }
|
|
.field { margin-bottom: 1rem; }
|
|
label { display: block; font-weight: 600; margin-bottom: 0.25rem; font-size: 0.9rem; }
|
|
input[type=text], input[type=password], input[type=number] {
|
|
width: 100%; padding: 0.5rem; box-sizing: border-box; border: 1px solid #ccc; border-radius: 4px;
|
|
}
|
|
.checkbox { display: flex; align-items: center; gap: 0.5rem; font-weight: normal; margin-bottom: 0.5rem; }
|
|
.checkbox input { width: auto; }
|
|
button { padding: 0.5rem 1rem; border: 0; border-radius: 4px; background: #222; color: white; cursor: pointer; }
|
|
button.secondary { background: #eee; color: #222; }
|
|
.preview { border: 1px solid #ccc; max-width: 100%; }
|
|
.status-grid { display: grid; grid-template-columns: auto 1fr; gap: 0.25rem 1rem; font-size: 0.9rem; margin: 1rem 0; }
|
|
.actions { display: flex; gap: 0.5rem; flex-wrap: wrap; margin: 1rem 0; }
|
|
form.inline { display: inline; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="brand">Paperwall</div>
|
|
<nav>
|
|
<a href="{{ url_for('index') }}">Status</a>
|
|
<a href="{{ url_for('settings_navidrome') }}">Navidrome</a>
|
|
<a href="{{ url_for('settings_weather') }}">Weather</a>
|
|
<a href="{{ url_for('settings_rotation') }}">Rotation</a>
|
|
</nav>
|
|
{% block content %}{% endblock %}
|
|
</body>
|
|
</html>
|