Initial commit: Location Management Flask app
This commit is contained in:
84
app/static/css/style.css
Normal file
84
app/static/css/style.css
Normal file
@@ -0,0 +1,84 @@
|
||||
/* ── Layout ─────────────────────────────────────────────────────────────── */
|
||||
#wrapper {
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
width: 240px;
|
||||
min-height: 100vh;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
max-height: 100vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
#page-content {
|
||||
min-height: 100vh;
|
||||
background: var(--bs-body-bg);
|
||||
}
|
||||
|
||||
/* ── Sidebar nav pills ──────────────────────────────────────────────────── */
|
||||
#sidebar .nav-link {
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.5rem 0.75rem;
|
||||
font-size: 0.9rem;
|
||||
transition: background 0.15s;
|
||||
}
|
||||
#sidebar .nav-link:hover:not(.active) {
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
}
|
||||
#sidebar .nav-link.active {
|
||||
background: var(--bs-primary);
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
/* ── Cards ──────────────────────────────────────────────────────────────── */
|
||||
.card {
|
||||
background: var(--bs-dark);
|
||||
}
|
||||
|
||||
.stat-card {
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
.stat-card:hover {
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.board-card {
|
||||
transition: box-shadow 0.2s;
|
||||
}
|
||||
.board-card:hover {
|
||||
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
/* ── Relay buttons ──────────────────────────────────────────────────────── */
|
||||
.relay-btn {
|
||||
min-width: 90px;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
/* ── Login page ─────────────────────────────────────────────────────────── */
|
||||
body:not(:has(#wrapper)) {
|
||||
background: #0d1117;
|
||||
}
|
||||
|
||||
/* ── Misc ───────────────────────────────────────────────────────────────── */
|
||||
.font-monospace {
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
.input-badge {
|
||||
font-size: 0.78rem;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
#sidebar {
|
||||
width: 100%;
|
||||
min-height: auto;
|
||||
position: relative;
|
||||
}
|
||||
#wrapper {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
22
app/static/js/app.js
Normal file
22
app/static/js/app.js
Normal file
@@ -0,0 +1,22 @@
|
||||
/**
|
||||
* app.js – Global Socket.IO connection & UI helpers
|
||||
*/
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
// ── Bootstrap alert auto-dismiss after 4 s ──────────────────────────────
|
||||
document.querySelectorAll(".alert").forEach(function (el) {
|
||||
setTimeout(function () {
|
||||
const bsAlert = bootstrap.Alert.getOrCreateInstance(el);
|
||||
if (bsAlert) bsAlert.close();
|
||||
}, 4000);
|
||||
});
|
||||
|
||||
// ── Confirm-before-submit for data-confirm forms ─────────────────────────
|
||||
document.querySelectorAll("form[data-confirm]").forEach(function (form) {
|
||||
form.addEventListener("submit", function (e) {
|
||||
if (!confirm(form.getAttribute("data-confirm"))) {
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
5
app/static/vendor/bootstrap-icons/font/bootstrap-icons.min.css
vendored
Normal file
5
app/static/vendor/bootstrap-icons/font/bootstrap-icons.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
app/static/vendor/bootstrap-icons/font/fonts/bootstrap-icons.woff
vendored
Normal file
BIN
app/static/vendor/bootstrap-icons/font/fonts/bootstrap-icons.woff
vendored
Normal file
Binary file not shown.
BIN
app/static/vendor/bootstrap-icons/font/fonts/bootstrap-icons.woff2
vendored
Normal file
BIN
app/static/vendor/bootstrap-icons/font/fonts/bootstrap-icons.woff2
vendored
Normal file
Binary file not shown.
6
app/static/vendor/bootstrap/css/bootstrap.min.css
vendored
Normal file
6
app/static/vendor/bootstrap/css/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
7
app/static/vendor/bootstrap/js/bootstrap.bundle.min.js
vendored
Normal file
7
app/static/vendor/bootstrap/js/bootstrap.bundle.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
app/static/vendor/socket.io/socket.io.min.js
generated
vendored
Normal file
7
app/static/vendor/socket.io/socket.io.min.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user