Private
Public Access
1
0
Files
madplaner/templates/base.html
2025-12-31 00:43:18 +01:00

117 lines
5.6 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Madplaner</title>
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/output.css') }}">
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<link rel="manifest" href="{{ url_for('static', filename='manifest.json') }}">
<meta name="theme-color" content="#2c3e50">
<link rel="apple-touch-icon" href="/static/icons/192.png">
<link rel="icon" href="https://fav.farm/%F0%9F%8D%B4">
<!-- cache busting for serivce worker -->
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}?v=1.1">
</head>
<script
defer
src="/stats/script.js"
data-website-id="4909e1da-6d66-4035-a401-f2acbaebdd3b"
data-host-url="/stats">
</script>
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js')
.then(() => console.log("Service Worker Registered"));
}
</script>
<body class="bg-gray-50 text-gray-900 font-sans">
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
<div class="max-w-5xl mx-auto mt-4 p-4 rounded-xl {% if category == 'error' %}bg-red-100 text-red-700 border border-red-200{% else %}bg-green-100 text-green-700 border border-green-200{% endif %}">
{{ message }}
</div>
{% endfor %}
{% endif %}
{% endwith %}
<nav class="sticky top-0 z-50 bg-white/80 backdrop-blur-md border-b border-stone-100 no-print">
<div class="max-w-6xl mx-auto px-6 h-20 flex items-center justify-between">
<a href="/" class="flex items-center gap-2 group">
<div class="w-8 h-8 bg-emerald-800 rounded-lg flex items-center justify-center transition-transform group-hover:rotate-3">
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" />
</svg>
</div>
<span class="text-xl text-emerald-800 italic font-serif">Madplaner</span>
</a>
<div class="hidden md:flex items-center gap-8">
<a href="/about" class="text-sm font-medium text-stone-600 hover:text-emerald-800 transition-colors">About</a>
{% if current_user.is_authenticated %}
<a href="/dashboard" class="text-sm font-medium text-stone-600 hover:text-emerald-800 transition-colors">Dashboard</a>
<div class="h-4 w-px bg-stone-200"></div>
<a href="/logout" class="text-sm font-medium bg-stone-100 text-stone-900 px-4 py-2 rounded-full hover:bg-stone-200 transition-all">Sign Out</a>
{% else %}
<a href="/login" class="text-sm font-medium text-stone-600 hover:text-stone-900">Login</a>
<a href="/register" class="text-sm font-medium bg-emerald-800 text-white px-6 py-2.5 rounded-full hover:bg-emerald-900 shadow-sm transition-all">Register</a>
{% endif %}
</div>
<button id="menu-toggle" class="md:hidden text-stone-900 p-2 focus:outline-none">
<svg id="menu-icon" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4 6h16M4 12h16m-7 6h7" />
</svg>
</button>
</div>
<div id="mobile-menu" class="hidden md:hidden bg-white/95 backdrop-blur-xl border-b border-stone-100 px-6 py-8 space-y-6 shadow-xl">
<div class="flex flex-col gap-6">
<a href="/about" class="text-lg font-medium text-stone-600">About</a>
{% if current_user.is_authenticated %}
<a href="/dashboard" class="text-lg font-medium text-stone-600">Dashboard</a>
<hr class="border-stone-100">
<a href="/logout" class="text-lg font-medium text-stone-900">Sign Out</a>
{% else %}
<a href="/login" class="text-lg font-medium text-stone-600">Login</a>
<a href="/register" class="text-center bg-emerald-800 text-white py-4 rounded-2xl font-semibold">Register</a>
{% endif %}
</div>
</div>
</nav>
<main class="container mx-auto p-6">
{% block content %}{% endblock %}
</main>
</body>
<script>
document.addEventListener('DOMContentLoaded', () => {
const menuToggle = document.getElementById('menu-toggle');
const mobileMenu = document.getElementById('mobile-menu');
menuToggle.addEventListener('click', () => {
// Toggle the 'hidden' class to show/hide the menu
const isHidden = mobileMenu.classList.toggle('hidden');
// Optional: Prevent background scrolling when menu is open
if (!isHidden) {
document.body.style.overflow = 'hidden';
} else {
document.body.style.overflow = '';
}
});
const mobileLinks = mobileMenu.querySelectorAll('a');
mobileLinks.forEach(link => {
link.addEventListener('click', () => {
mobileMenu.classList.add('hidden');
document.body.style.overflow = '';
});
});
});
</script>
</html>