93 lines
4.4 KiB
HTML
93 lines
4.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>BookApp AI</title>
|
|
<!-- Bootstrap 5 CSS -->
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<!-- FontAwesome -->
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
|
<style>
|
|
body { background-color: #f8f9fa; }
|
|
.navbar-brand { font-weight: bold; letter-spacing: 1px; }
|
|
.card { border: none; box-shadow: 0 4px 6px rgba(0,0,0,0.1); transition: transform 0.2s; }
|
|
.card:hover { transform: translateY(-2px); }
|
|
.btn-primary { background-color: #2c3e50; border-color: #2c3e50; }
|
|
.btn-primary:hover { background-color: #1a252f; border-color: #1a252f; }
|
|
.console-log {
|
|
background-color: #1e1e1e; color: #00ff00;
|
|
font-family: 'Courier New', Courier, monospace;
|
|
padding: 15px; border-radius: 5px;
|
|
height: 400px; overflow-y: scroll;
|
|
white-space: pre-wrap; font-size: 0.9rem;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
{% if session.get('original_admin_id') %}
|
|
<div class="bg-danger text-white text-center py-2 shadow-sm" style="position: sticky; top: 0; z-index: 1050;">
|
|
<strong><i class="fas fa-user-secret me-2"></i>Viewing site as {{ current_user.username }}</strong>
|
|
<a href="{{ url_for('stop_impersonate') }}" class="btn btn-sm btn-light ms-3 text-danger fw-bold">Stop Impersonating</a>
|
|
</div>
|
|
{% endif %}
|
|
<nav class="navbar navbar-expand-lg navbar-dark bg-dark mb-4">
|
|
<div class="container">
|
|
<a class="navbar-brand" href="/"><i class="fas fa-book-open me-2"></i>BookApp AI <small class="text-muted fs-6 ms-1">v{{ app_version }}</small></a>
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navbarNav">
|
|
<ul class="navbar-nav ms-auto align-items-center">
|
|
{% if current_user.is_authenticated %}
|
|
{% if current_user.is_admin %}
|
|
<li class="nav-item me-3">
|
|
<a class="nav-link text-warning" href="/admin"><i class="fas fa-shield-alt me-1"></i> Admin</a>
|
|
</li>
|
|
{% endif %}
|
|
<li class="nav-item me-3">
|
|
<a class="nav-link" href="/personas"><i class="fas fa-users me-1"></i> Personas</a>
|
|
</li>
|
|
<li class="nav-item me-3">
|
|
<span class="text-light small">
|
|
<i class="fas fa-coins text-warning"></i> Spend: ${{ "%.2f"|format(current_user.total_spend) }}
|
|
</span>
|
|
</li>
|
|
<li class="nav-item">
|
|
<span class="text-light me-3">Hello, {{ current_user.username }}</span>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="btn btn-sm btn-outline-light" href="/logout">Logout</a>
|
|
</li>
|
|
{% endif %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<div class="container">
|
|
{% with messages = get_flashed_messages(with_categories=true) %}
|
|
{% if messages %}
|
|
{% for category, message in messages %}
|
|
<div class="alert alert-{{ category if category != 'message' else 'info' }} alert-dismissible fade show">
|
|
{{ message }}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endwith %}
|
|
|
|
{% block content %}{% endblock %}
|
|
</div>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
|
<script>
|
|
// Initialize Bootstrap Tooltips globally
|
|
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
|
|
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
|
|
return new bootstrap.Tooltip(tooltipTriggerEl)
|
|
})
|
|
</script>
|
|
{% block scripts %}{% endblock %}
|
|
</body>
|
|
</html> |