32 lines
1.6 KiB
Vue
32 lines
1.6 KiB
Vue
<template>
|
|
<div class="min-h-screen bg-slate-950 text-slate-100">
|
|
<nav v-if="isAuthenticated" class="border-b border-slate-800 bg-slate-900/80 backdrop-blur">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="flex items-center justify-between h-14">
|
|
<div class="flex items-center gap-4">
|
|
<NuxtLink to="/" class="text-xl font-bold text-blue-400">XFlow</NuxtLink>
|
|
<NuxtLink to="/canvases" class="text-sm text-slate-400 hover:text-white transition">Карты</NuxtLink>
|
|
<NuxtLink to="/canvas" class="text-sm text-slate-400 hover:text-white transition">Редактор</NuxtLink>
|
|
<NuxtLink to="/flow" class="text-sm text-slate-400 hover:text-white transition">Поток</NuxtLink>
|
|
<NuxtLink v-if="isAdmin" to="/admin" class="text-sm text-slate-400 hover:text-white transition">Админ</NuxtLink>
|
|
<NuxtLink to="/settings" class="text-sm text-slate-400 hover:text-white transition">Настройки</NuxtLink>
|
|
</div>
|
|
<div class="flex items-center gap-4">
|
|
<NuxtLink :to="`/profile/${user?.id}`" class="text-sm text-slate-400 hover:text-white transition">
|
|
{{ user?.username }}
|
|
</NuxtLink>
|
|
<button @click="logout" class="text-sm text-red-400 hover:text-red-300 transition">Выйти</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
<slot />
|
|
<AchievementOverlay :achievements="userAchievements" />
|
|
</div>
|
|
</template>
|
|
|
|
<script setup>
|
|
const { user, isAuthenticated, isAdmin, logout } = useAuth()
|
|
const { achievements: userAchievements } = useAchievements()
|
|
</script>
|