up
This commit is contained in:
@@ -165,6 +165,64 @@ const navItems = computed(() => [
|
||||
{{ t("message.login_or_register") }}
|
||||
</RouterLink>
|
||||
</div>
|
||||
|
||||
<!-- Mobile user avatar (only when logged in) -->
|
||||
<div v-if="userStore.isLoggedIn" class="ml-3 md:hidden">
|
||||
<button
|
||||
class="rounded-md p-1.5 text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:hover:bg-dk-card dark:hover:text-dk-text"
|
||||
@click="userDropdownOpen = !userDropdownOpen"
|
||||
>
|
||||
<img
|
||||
:src="userStore.avatarUrl"
|
||||
class="h-7 w-7 rounded-full object-cover"
|
||||
alt="avatar"
|
||||
/>
|
||||
</button>
|
||||
<Transition
|
||||
enter-active-class="transition duration-100 ease-out"
|
||||
enter-from-class="transform scale-95 opacity-0"
|
||||
enter-to-class="transform scale-100 opacity-100"
|
||||
leave-active-class="transition duration-75 ease-in"
|
||||
leave-from-class="transform scale-100 opacity-100"
|
||||
leave-to-class="transform scale-95 opacity-0"
|
||||
>
|
||||
<div
|
||||
v-if="userDropdownOpen"
|
||||
class="absolute right-4 z-50 mt-1 w-48 rounded-lg border border-gray-200 bg-white py-1 shadow-lg dark:border-dk-muted dark:bg-dk-card"
|
||||
>
|
||||
<div class="px-4 py-2 text-sm text-gray-600 dark:text-dk-subtle">
|
||||
<div class="flex items-center gap-2">
|
||||
<img
|
||||
:src="userStore.avatarUrl"
|
||||
class="h-8 w-8 rounded-full object-cover"
|
||||
alt="avatar"
|
||||
/>
|
||||
<div class="truncate">{{ userStore.user?.Name || "" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="my-1 border-gray-200 dark:border-dk-muted" />
|
||||
<RouterLink
|
||||
to="/settings/account"
|
||||
class="flex items-center gap-2 px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-dk-subtle dark:hover:bg-dk-muted"
|
||||
@click="userDropdownOpen = false"
|
||||
>
|
||||
<IconSettings :size="16" />
|
||||
{{ t("message.user_settings") }}
|
||||
</RouterLink>
|
||||
<hr class="my-1 border-gray-200 dark:border-dk-muted" />
|
||||
<button
|
||||
class="flex w-full items-center gap-2 px-4 py-2 text-sm text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-900/20"
|
||||
@click="
|
||||
handleLogout();
|
||||
userDropdownOpen = false;
|
||||
"
|
||||
>
|
||||
<IconLogout :size="16" />
|
||||
{{ t("message.logout") }}
|
||||
</button>
|
||||
</div>
|
||||
</Transition>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Mobile menu -->
|
||||
@@ -208,27 +266,25 @@ const navItems = computed(() => [
|
||||
<IconMoon v-if="!isDark" :size="20" />
|
||||
<IconSun v-else :size="20" />
|
||||
</button>
|
||||
<div class="ml-auto">
|
||||
<RouterLink
|
||||
v-if="!userStore.isLoggedIn"
|
||||
to="/login"
|
||||
class="rounded-md bg-blue-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-blue-700"
|
||||
@click="mobileMenuOpen = false"
|
||||
>
|
||||
{{ t("message.login_or_register") }}
|
||||
</RouterLink>
|
||||
<button
|
||||
v-else
|
||||
class="rounded-md px-3 py-1.5 text-sm text-red-600 hover:bg-red-50 dark:text-red-400"
|
||||
@click="
|
||||
handleLogout();
|
||||
mobileMenuOpen = false;
|
||||
"
|
||||
>
|
||||
{{ t("message.logout") }}
|
||||
</button>
|
||||
<div class="ml-auto">
|
||||
<RouterLink
|
||||
v-if="!userStore.isLoggedIn"
|
||||
to="/login"
|
||||
class="rounded-md bg-blue-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-blue-700"
|
||||
@click="mobileMenuOpen = false"
|
||||
>
|
||||
{{ t("message.login_or_register") }}
|
||||
</RouterLink>
|
||||
<div v-else class="flex items-center gap-2 text-sm text-gray-600 dark:text-dk-subtle">
|
||||
<img
|
||||
:src="userStore.avatarUrl"
|
||||
class="h-6 w-6 rounded-full object-cover"
|
||||
alt="avatar"
|
||||
/>
|
||||
<span class="truncate">{{ userStore.user?.Name || "" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Transition>
|
||||
</header>
|
||||
|
||||
Reference in New Issue
Block a user