diff --git a/src/client/admin/main.ts b/src/client/admin/main.ts index 08c1c2b..efb172b 100644 --- a/src/client/admin/main.ts +++ b/src/client/admin/main.ts @@ -1,5 +1,35 @@ import '../style.css' +// ---- Mobile sidebar toggle ----------------------------------------------- + +const sidebar = document.getElementById('admin-sidebar') +const sidebarOverlay = document.getElementById('sidebar-overlay') +const openBtn = document.getElementById('sidebar-open-btn') + +function openSidebar() { + sidebar?.classList.remove('-translate-x-full') + sidebar?.classList.add('translate-x-0') + sidebarOverlay?.classList.remove('hidden') + document.body.style.overflow = 'hidden' +} + +function closeSidebar() { + sidebar?.classList.add('-translate-x-full') + sidebar?.classList.remove('translate-x-0') + sidebarOverlay?.classList.add('hidden') + document.body.style.overflow = '' +} + +openBtn?.addEventListener('click', openSidebar) +sidebarOverlay?.addEventListener('click', closeSidebar) + +// Close sidebar on nav link click (mobile UX) +document.querySelectorAll('#admin-sidebar .nav-link').forEach(link => { + link.addEventListener('click', () => { + if (window.innerWidth < 1024) closeSidebar() + }) +}) + // ---- Toast utility ------------------------------------------------------- function showToast(msg: string, durationMs = 2500) { diff --git a/views/admin/categories.ejs b/views/admin/categories.ejs index 4ec05e0..8cf4a5c 100644 --- a/views/admin/categories.ejs +++ b/views/admin/categories.ejs @@ -1,9 +1,10 @@ <%- include('../partials/head', { title: 'Categories' }) %> <%- include('../partials/adminNav', { currentPath: '/admin/categories' }) %> +<%- include('../partials/adminTopBar') %> -
+
<%- include('../partials/adminBanner') %> -
+

Categories

Organize your models into groups

@@ -18,12 +19,12 @@

New Category

-
+
-
@@ -47,25 +48,27 @@ <%= cat.model_count %> model<%= cat.model_count !== 1 ? 's' : '' %> - + + class="bg-surface-700 border border-gray-600 rounded-lg px-3 py-1.5 text-sm text-white focus:outline-none focus:border-accent w-full sm:w-40 transition-colors" /> - - + class="bg-surface-700 border border-gray-600 rounded-lg px-3 py-1.5 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-accent w-full sm:w-44 transition-colors" /> +
+ + +
-
-