feat: Añadir página para seleccionar servidor y ocultar navbar en el dashboard

This commit is contained in:
Shni
2025-10-14 23:01:54 -05:00
parent e46e8420b5
commit 37355e3e9a
4 changed files with 52 additions and 18 deletions

View File

@@ -907,6 +907,18 @@ export const server = createServer(
appName: pkg.name ?? "Amayo Bot", appName: pkg.name ?? "Amayo Bot",
user, user,
guilds, guilds,
hideNavbar: true,
});
return;
}
// Select guild page
if (url.pathname === "/dashboard/select-guild") {
await renderTemplate(req, res, "select_guild", {
appName: pkg.name ?? "Amayo Bot",
user,
guilds,
hideNavbar: true,
}); });
return; return;
} }
@@ -917,13 +929,14 @@ export const server = createServer(
if (parts.length >= 2) { if (parts.length >= 2) {
const guildId = parts[1]; const guildId = parts[1];
const page = parts[2] || "overview"; const page = parts[2] || "overview";
// For now render same dashboard with selected guild context stub // Render dashboard with selected guild context; hide global navbar for server view
await renderTemplate(req, res, "dashboard", { await renderTemplate(req, res, "dashboard", {
appName: pkg.name ?? "Amayo Bot", appName: pkg.name ?? "Amayo Bot",
user, user,
guilds, guilds,
selectedGuild: guildId, selectedGuild: guildId,
page, page,
hideNavbar: true,
}); });
return; return;
} }

View File

@@ -21,7 +21,9 @@
</head> </head>
<body class="min-h-screen pixel-grid-bg pt-14" style="background-image: url('/assets/images/background.svg'); background-size: cover; background-position: center; background-attachment: fixed; background-repeat: no-repeat;"> <body class="min-h-screen pixel-grid-bg pt-14" style="background-image: url('/assets/images/background.svg'); background-size: cover; background-position: center; background-attachment: fixed; background-repeat: no-repeat;">
<%- await include('../partials/navbar', { appName }) %> <% if (!hideNavbar) { %>
<%- await include('../partials/navbar', { appName }) %>
<% } %>
<div class="relative z-10"> <div class="relative z-10">
<%- body %> <%- body %>

View File

@@ -6,16 +6,8 @@
<h1 class="text-3xl font-bold mb-2"><%= appName %></h1> <h1 class="text-3xl font-bold mb-2"><%= appName %></h1>
<p class="text-sm text-slate-200/80 mb-4">Panel de administración</p> <p class="text-sm text-slate-200/80 mb-4">Panel de administración</p>
<div class="mt-4"> <div class="mt-4">
<label class="block text-xs text-slate-300 mb-2">Selecciona servidor</label> <p class="text-sm text-slate-200/80">Selecciona un servidor desde la página principal para administrar sus ajustes.</p>
<select id="guildSelector" class="w-full rounded-md p-3 bg-white/6 text-white focus:outline-none"> <a href="/dashboard/select-guild" class="inline-block mt-3 pixel-btn">Seleccionar servidor</a>
<% if (guilds && guilds.length) { %>
<% guilds.forEach(g => { %>
<option value="<%= g.id %>"><%= g.name %> (<%= g.id %>)</option>
<% }) %>
<% } else { %>
<option disabled>No tienes servidores gestionados</option>
<% } %>
</select>
</div> </div>
</div> </div>
</div> </div>
@@ -35,9 +27,4 @@
</div> </div>
</div> </div>
<script>
document.getElementById('guildSelector')?.addEventListener('change', (e) => {
const v = e.target.value;
if (v) window.location.href = `/dashboard/${v}/overview`;
});
</script>

View File

@@ -0,0 +1,32 @@
<div class="max-w-3xl mx-auto p-6">
<div class="backdrop-blur-md bg-white/6 border border-white/10 rounded-xl p-6 shadow-lg glass-card">
<h2 class="text-2xl font-bold mb-2">Selecciona el servidor</h2>
<p class="text-sm text-slate-200/80 mb-4">Elige el servidor que quieres administrar. Serás redirigido a la página del servidor.</p>
<div class="mt-4">
<label class="block text-xs text-slate-300 mb-2">Servidor</label>
<select id="guildSelector" class="w-full rounded-md p-3 bg-white/6 text-white focus:outline-none">
<% if (guilds && guilds.length) { %>
<% guilds.forEach(g => { %>
<option value="<%= g.id %>"><%= g.name %> (<%= g.id %>)</option>
<% }) %>
<% } else { %>
<option disabled>No tienes servidores gestionados</option>
<% } %>
</select>
</div>
<div class="mt-4 text-right">
<button id="goBtn" class="pixel-btn">Ir al servidor</button>
</div>
</div>
</div>
<script>
const sel = document.getElementById('guildSelector');
const btn = document.getElementById('goBtn');
btn?.addEventListener('click', () => {
const v = sel.value;
if (v) window.location.href = `/dashboard/${v}/overview`;
});
</script>