Files
photobooth-qr/src/admin/gallery/index.html
T
KevinLecou a1e24d1aa8 Première passe de direction artistique (palette, marque, carton imprimable)
Palette affinée autour de l'accent brun/terracotta déjà en prod (continuité,
pas de rupture) : tokens de couleur/rayon/ombre partagés entre la page
upload et la galerie admin. Emoji remplacés par des icônes SVG inline
(rendu cohérent multi-OS). Bloc de marque discret en en-tête des deux
écrans invité/admin.

Nouveau : carton imprimable A5 (src/admin/print-template/) qui génère le
QR en direct via le module qrcode.js existant, prêt pour l'export PDF
navigateur.

Pas de police custom : stack système conservée pour rester sobre
(zéro poids réseau supplémentaire).
2026-09-16 13:19:44 +02:00

66 lines
2.5 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Galerie événement — admin</title>
<!--
Cette page est servie pour toute URL du type /admin/<slug> (le slug est lu
côté client depuis window.location.pathname, le token depuis les query
params ?token=..., voir gallery.js). Comme pour /e/<slug> (voir
src/e/index.html), ça suppose une règle de réécriture côté serveur qui
renvoie ce fichier pour toute requête sous /admin/* — hors scope de ce
fichier front, à mettre en place lors du déploiement.
-->
<meta name="robots" content="noindex, nofollow">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="page">
<header class="page__header">
<p class="brand" aria-hidden="true">
<svg class="brand__mark" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" focusable="false">
<path d="M4 8h3l1.5-2h7L17 8h3a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1Z"/>
<circle cx="12" cy="13" r="3.5"/>
</svg>
<span class="brand__name">photobooth</span>
</p>
<h1 id="event-name">Galerie événement</h1>
<p id="event-meta" class="event-meta" hidden></p>
</header>
<section id="status-loading" class="state-block" role="status">
<p>Chargement de la galerie…</p>
</section>
<section id="status-error" class="state-block state-block--error" hidden role="alert">
<p id="status-error-message"></p>
<button type="button" id="retry-btn" hidden>Réessayer</button>
</section>
<section id="gallery-content" hidden>
<p id="status-banner" class="status-banner" hidden></p>
<div class="toolbar">
<button type="button" id="refresh-btn" class="btn btn--secondary">Actualiser</button>
<button type="button" id="download-zip-btn" class="btn">Télécharger tout (ZIP)</button>
</div>
<p id="zip-status" class="zip-status" aria-live="polite" hidden></p>
<p id="empty-state" class="state-block" hidden></p>
<ul id="photo-grid" class="photo-grid"></ul>
</section>
</main>
<!--
config.js n'est PAS commité (voir .gitignore) : copier config.example.js
en config.js et renseigner les vraies valeurs avant déploiement. Chargé en
script classique (donc synchrone, avant le module) pour garantir que
window.__PHOTOBOOTH_CONFIG__ existe avant l'exécution de gallery.js.
-->
<script src="config.js"></script>
<script type="module" src="gallery.js"></script>
</body>
</html>