Files
monitoring-pf/app/templates/base.html
2026-06-04 14:55:41 +03:00

89 lines
4.0 KiB
HTML

<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>{% block title %}DLD Monitor{% endblock %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
body { background: #f4f5f9; }
.navbar-brand { letter-spacing: .3px; }
.nav-link.active { font-weight: 600; color: #0d6efd !important; }
.badge-sale { background: #198754; }
.badge-rent { background: #0d6efd; }
.card { border: 1px solid #e9ecef; }
.listing-card { border-left: 4px solid #dee2e6; }
.listing-card.removed { border-left-color: #dc3545; opacity: 0.65; }
.listing-card.active { border-left-color: #198754; }
.src-pf { color: #d63384; font-weight: 600; }
.src-bayut { color: #0d6efd; font-weight: 600; }
.price-up { color: #dc3545; }
.price-down { color: #198754; }
pre.permit { display: inline; background: #eee; padding: 2px 6px; border-radius: 4px; }
.stat-chip { background:#fff; border:1px solid #e9ecef; border-radius:.5rem; padding:.4rem .8rem; }
.stat-chip .n { font-size:1.25rem; font-weight:700; line-height:1; }
footer { color:#9aa0a6; font-size:.8rem; }
/* Mobile tweaks */
@media (max-width: 575.98px) {
body { background: #fff; }
.container { padding-left: .75rem; padding-right: .75rem; }
h3 { font-size: 1.35rem; }
.card-body { padding: .75rem; }
.fs-4 { font-size: 1.1rem !important; }
}
</style>
{% block head %}{% endblock %}
</head>
<body>
<nav class="navbar navbar-expand-lg bg-white border-bottom mb-4">
<div class="container">
<a class="navbar-brand fw-bold" href="{{ url_path('/') }}">🏠 DLD Monitor</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#mainnav" aria-controls="mainnav"
aria-expanded="false" aria-label="Меню">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="mainnav">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a href="{{ url_path('/') }}" class="nav-link {{ 'active' if request.url.path == '/' or request.url.path.startswith('/projects') else '' }}">Проекты</a>
</li>
<li class="nav-item">
<a href="{{ url_path('/employees') }}" class="nav-link {{ 'active' if request.url.path.startswith('/employees') else '' }}">Сотрудники</a>
</li>
</ul>
<div class="d-flex flex-column flex-lg-row align-items-stretch align-items-lg-center gap-2">
<a href="{{ url_path('/projects/new') }}" class="btn btn-sm btn-primary">+ Проект</a>
<span class="vr d-none d-lg-block"></span>
{% if request.state.is_admin %}
{% if request.state.admin_configured %}
<span class="badge bg-success align-self-start align-self-lg-center">🔓 админ</span>
<form method="post" action="{{ url_path('/admin/logout') }}">
<input type="hidden" name="next" value="{{ request.url.path }}">
<button class="btn btn-sm btn-outline-secondary w-100">Выйти</button>
</form>
{% else %}
<span class="badge bg-warning text-dark align-self-start align-self-lg-center" title="ADMIN_PIN не задан в .env — права не ограничены">⚠ без PIN</span>
{% endif %}
{% else %}
<a href="{{ url_path('/admin/login?next=' ~ request.url.path) }}" class="btn btn-sm btn-outline-dark">🔒 Админ</a>
{% endif %}
</div>
</div>
</div>
</nav>
<div class="container">
{% if flash %}
<div class="alert alert-info">{{ flash }}</div>
{% endif %}
{% block content %}{% endblock %}
</div>
<footer class="container text-center py-4">DLD Monitor · HOME LIGA REAL ESTATE</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
{% block scripts %}{% endblock %}
</body>
</html>