ci: fix pipeline, update readme and anonymize ZT references
This commit is contained in:
@@ -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>
|
||||
@@ -0,0 +1,21 @@
|
||||
<!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>Hydr'Hacked</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="Hydr'Hacked">
|
||||
<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>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app-container">
|
||||
@@ -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_transparent.png" alt="Logo" class="brand-icon">
|
||||
<span>Hydr'Hacked</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>
|
||||
|
||||
Reference in New Issue
Block a user