Initial commit (v1.5.9)

This commit is contained in:
2026-09-15 21:45:47 +02:00
commit b8d3dd52ec
89 changed files with 13429 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
</div>
<div id="modal-overlay" class="modal-overlay hidden">
<div class="modal-content">
<div class="modal-header">
<h3 id="modal-title">Titre</h3>
<button id="modal-close"><i data-lucide="x"></i></button>
</div>
<div id="modal-body" class="modal-body"></div>
</div>
</div>
<div id="toast" class="toast hidden">Notification</div>
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js')
.then(reg => console.log('SW enregistré!', reg.scope))
.catch(err => console.log('SW échec:', err));
});
}
</script>
<script src="/app.auth.js"></script>
<script src="/app.js"></script>
</body>
</html>
+22
View File
@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
<title>Agora</title>
<link rel="manifest" href="/manifest.json">
<meta name="theme-color" content="#1a1a1a">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="Agora">
<link rel="apple-touch-icon" href="/images/icone-192.png">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/style.css">
<script src="/lucide.min.js"></script>
<link rel="icon" type="image/svg+xml" href="/logo_svg.svg">
</head>
<body>
<div id="app-container">
+93
View File
@@ -0,0 +1,93 @@
<nav class="sidebar" id="sidebar">
<script>
(function() {
if (localStorage.getItem('sidebar-collapsed') === 'true') {
document.getElementById('sidebar').classList.add('collapsed');
}
})();
</script>
<div class="brand">
<div class="brand-logo">
<img src="/images/logo_svg.svg" alt="Logo" class="brand-icon">
<span>Agora</span>
</div>
<button id="btn-sidebar-toggle" class="btn-sidebar-toggle" title="Réduire la barre latérale">
<i data-lucide="chevron-left" id="sidebar-toggle-icon"></i>
</button>
</div>
<ul class="nav-links">
<a href="/trending" style="text-decoration: none; color: inherit;">
<li class="<%= page === 'trending' ? 'active' : '' %>" data-target="section-trending">
<i data-lucide="flame"></i>
<span>Tendances</span>
</li>
</a>
<a href="/recent" style="text-decoration: none; color: inherit;">
<li class="<%= page === 'recent' ? 'active' : '' %>" data-target="section-recent">
<i data-lucide="clock"></i>
<span>Ajouts récents</span>
</li>
</a>
<a href="/search" style="text-decoration: none; color: inherit;">
<li class="<%= page === 'search' ? 'active' : '' %>" data-target="section-search">
<i data-lucide="search"></i>
<span>Recherche</span>
</li>
</a>
<a href="/downloads" style="text-decoration: none; color: inherit;">
<li class="<%= page === 'downloads' ? 'active' : '' %>" data-target="section-downloads">
<i data-lucide="download"></i>
<span>Téléchargements</span>
</li>
</a>
<a href="/manual" style="text-decoration: none; color: inherit;">
<li class="<%= page === 'manual' ? 'active' : '' %>" data-target="section-manual">
<i data-lucide="plus-circle"></i>
<span>Ajout manuel</span>
</li>
</a>
<% if (typeof currentUser !== 'undefined' && currentUser && currentUser.role === 'admin') { %>
<a href="/settings" style="text-decoration: none; color: inherit;">
<li class="<%= page === 'settings' ? 'active' : '' %>" data-target="section-settings">
<i data-lucide="settings"></i>
<span>Paramètres</span>
</li>
</a>
<% } %>
</ul>
<div class="nav-footer">
<button id="btn-logout" class="btn-text">
<i data-lucide="log-out"></i>
<span>Déconnexion</span>
</button>
</div>
</nav>
<script>
document.addEventListener('DOMContentLoaded', () => {
const sidebar = document.getElementById('sidebar');
const toggleBtn = document.getElementById('btn-sidebar-toggle');
const toggleIcon = document.getElementById('sidebar-toggle-icon');
if (!sidebar || !toggleBtn || !toggleIcon) return;
const updateIcon = (isCollapsed) => {
toggleIcon.setAttribute('data-lucide', isCollapsed ? 'chevron-right' : 'chevron-left');
if (window.lucide) {
window.lucide.createIcons({ root: toggleBtn });
}
};
// Sync initial icon state
const isCollapsed = sidebar.classList.contains('collapsed');
updateIcon(isCollapsed);
toggleBtn.addEventListener('click', () => {
const willCollapse = !sidebar.classList.contains('collapsed');
sidebar.classList.toggle('collapsed', willCollapse);
localStorage.setItem('sidebar-collapsed', willCollapse ? 'true' : 'false');
updateIcon(willCollapse);
});
});
</script>