feat: Add consistent mobile hamburger menu across all pages
- Updated profile.vue to use MobileMenu on mobile, desktop buttons on desktop - Updated admin.vue to use MobileMenu on mobile, desktop buttons on desktop - Updated users.vue to use MobileMenu on mobile, desktop buttons on desktop - All pages with header navigation now have consistent mobile UX - Mobile menu provides clean, organized navigation with all options - Desktop retains traditional button layout for familiarity This ensures consistent navigation experience across the entire application, with the hamburger menu appearing on all pages with headers when viewed on mobile devices. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -6,7 +6,21 @@
|
|||||||
<NuxtLink to="/">
|
<NuxtLink to="/">
|
||||||
<img src="/logos/logo.png" alt="New Life Christian Church" class="h-16 w-auto cursor-pointer hover:opacity-80" />
|
<img src="/logos/logo.png" alt="New Life Christian Church" class="h-16 w-auto cursor-pointer hover:opacity-80" />
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
<div class="flex items-center gap-4">
|
|
||||||
|
<!-- Mobile Menu -->
|
||||||
|
<div class="md:hidden">
|
||||||
|
<ClientOnly>
|
||||||
|
<MobileMenu
|
||||||
|
:is-authenticated="true"
|
||||||
|
:is-admin="true"
|
||||||
|
:show-home="true"
|
||||||
|
:current-path="route.fullPath"
|
||||||
|
/>
|
||||||
|
</ClientOnly>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Desktop Navigation -->
|
||||||
|
<div class="hidden md:flex items-center gap-4">
|
||||||
<NuxtLink
|
<NuxtLink
|
||||||
to="/"
|
to="/"
|
||||||
class="px-4 py-2 text-sm font-medium text-blue-700 bg-blue-50 rounded-md hover:bg-blue-100"
|
class="px-4 py-2 text-sm font-medium text-blue-700 bg-blue-50 rounded-md hover:bg-blue-100"
|
||||||
@@ -417,6 +431,8 @@ definePageMeta({
|
|||||||
middleware: 'auth'
|
middleware: 'auth'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const route = useRoute()
|
||||||
|
|
||||||
// Fetch all sermons for management (including archived)
|
// Fetch all sermons for management (including archived)
|
||||||
const { data: allSermons, refresh: refreshSermons } = await useFetch('/api/sermons?includeArchived=true')
|
const { data: allSermons, refresh: refreshSermons } = await useFetch('/api/sermons?includeArchived=true')
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,21 @@
|
|||||||
<NuxtLink to="/">
|
<NuxtLink to="/">
|
||||||
<img src="/logos/logo.png" alt="New Life Christian Church" class="h-16 w-auto cursor-pointer hover:opacity-80" />
|
<img src="/logos/logo.png" alt="New Life Christian Church" class="h-16 w-auto cursor-pointer hover:opacity-80" />
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
<div class="flex items-center gap-2">
|
|
||||||
|
<!-- Mobile Menu -->
|
||||||
|
<div class="md:hidden">
|
||||||
|
<ClientOnly>
|
||||||
|
<MobileMenu
|
||||||
|
:is-authenticated="true"
|
||||||
|
:is-admin="false"
|
||||||
|
:show-home="true"
|
||||||
|
:current-path="route.fullPath"
|
||||||
|
/>
|
||||||
|
</ClientOnly>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Desktop Navigation -->
|
||||||
|
<div class="hidden md:flex items-center gap-2">
|
||||||
<NuxtLink
|
<NuxtLink
|
||||||
to="/"
|
to="/"
|
||||||
class="px-3 py-2 text-sm font-medium text-blue-700 bg-blue-50 rounded-md hover:bg-blue-100 whitespace-nowrap"
|
class="px-3 py-2 text-sm font-medium text-blue-700 bg-blue-50 rounded-md hover:bg-blue-100 whitespace-nowrap"
|
||||||
@@ -254,6 +268,8 @@ definePageMeta({
|
|||||||
middleware: 'auth'
|
middleware: 'auth'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const route = useRoute()
|
||||||
|
|
||||||
const profile = ref({
|
const profile = ref({
|
||||||
username: '',
|
username: '',
|
||||||
firstName: '',
|
firstName: '',
|
||||||
|
|||||||
@@ -7,7 +7,21 @@
|
|||||||
<NuxtLink to="/">
|
<NuxtLink to="/">
|
||||||
<img src="/logos/logo.png" alt="New Life Christian Church" class="h-16 w-auto cursor-pointer hover:opacity-80" />
|
<img src="/logos/logo.png" alt="New Life Christian Church" class="h-16 w-auto cursor-pointer hover:opacity-80" />
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
<div class="flex items-center gap-4">
|
|
||||||
|
<!-- Mobile Menu -->
|
||||||
|
<div class="md:hidden">
|
||||||
|
<ClientOnly>
|
||||||
|
<MobileMenu
|
||||||
|
:is-authenticated="true"
|
||||||
|
:is-admin="true"
|
||||||
|
:show-home="true"
|
||||||
|
:current-path="route.fullPath"
|
||||||
|
/>
|
||||||
|
</ClientOnly>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Desktop Navigation -->
|
||||||
|
<div class="hidden md:flex items-center gap-4">
|
||||||
<NuxtLink
|
<NuxtLink
|
||||||
to="/"
|
to="/"
|
||||||
class="px-4 py-2 text-sm font-medium text-blue-700 bg-blue-50 rounded-md hover:bg-blue-100"
|
class="px-4 py-2 text-sm font-medium text-blue-700 bg-blue-50 rounded-md hover:bg-blue-100"
|
||||||
@@ -219,6 +233,8 @@ definePageMeta({
|
|||||||
middleware: 'auth'
|
middleware: 'auth'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const route = useRoute()
|
||||||
|
|
||||||
interface User {
|
interface User {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
|
|||||||
Reference in New Issue
Block a user