|
|
@@ -26,7 +26,7 @@
|
|
|
</head>
|
|
|
<body class="min-h-screen flex flex-col">
|
|
|
|
|
|
- <div class="sticky top-0 z-50">
|
|
|
+ <div class="fixed top-0 left-0 right-0 z-50" id="site-header">
|
|
|
<nav class="bg-gray-900 text-white shadow-lg">
|
|
|
<div class="max-w-7xl mx-auto px-6 py-3 flex items-center justify-between">
|
|
|
<div class="flex items-center gap-3">
|
|
|
@@ -61,7 +61,9 @@
|
|
|
<span class="inline-block w-2 h-2 rounded-full bg-blue-400 animate-pulse shrink-0"></span>
|
|
|
<span class="text-blue-300 font-medium shrink-0">En cours</span>
|
|
|
<div id="activity-list" class="flex gap-4 flex-wrap text-gray-200"></div>
|
|
|
- </div><!-- fin sticky -->
|
|
|
+ </div><!-- fin fixed header -->
|
|
|
+ <!-- Spacer : hauteur calculée dynamiquement par JS pour compenser le header fixed -->
|
|
|
+ <div id="header-spacer"></div>
|
|
|
|
|
|
<main class="flex-1 max-w-7xl mx-auto w-full px-6 py-8">
|
|
|
{% with messages = get_flashed_messages(with_categories=true) %}
|
|
|
@@ -88,6 +90,14 @@
|
|
|
|
|
|
{% block scripts %}{% endblock %}
|
|
|
<script>
|
|
|
+ // Spacer dynamique pour le header fixed
|
|
|
+ (function() {
|
|
|
+ const header = document.getElementById('site-header');
|
|
|
+ const spacer = document.getElementById('header-spacer');
|
|
|
+ function sync() { spacer.style.height = header.offsetHeight + 'px'; }
|
|
|
+ sync();
|
|
|
+ new ResizeObserver(sync).observe(header);
|
|
|
+ })();
|
|
|
(function() {
|
|
|
const bar = document.getElementById('activity-bar');
|
|
|
const list = document.getElementById('activity-list');
|