2026-03-28 16:02:59 -05:00
|
|
|
<template>
|
2026-03-30 20:51:29 -05:00
|
|
|
<div class="bg-canvas min-h-screen text-ink selection:bg-accent/20 selection:text-accent">
|
2026-03-28 16:02:59 -05:00
|
|
|
|
2026-03-31 08:31:40 -05:00
|
|
|
<template v-if="isAuthenticated">
|
|
|
|
|
<SideNavBar />
|
|
|
|
|
<TopAppBar />
|
|
|
|
|
<main class="ml-60 pt-16 pb-12 px-8 min-h-screen">
|
|
|
|
|
<div class="max-w-7xl mx-auto pt-8">
|
|
|
|
|
<router-view v-slot="{ Component }">
|
|
|
|
|
<transition name="fade" mode="out-in">
|
|
|
|
|
<component :is="Component" />
|
|
|
|
|
</transition>
|
|
|
|
|
</router-view>
|
|
|
|
|
</div>
|
|
|
|
|
</main>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<template v-else>
|
|
|
|
|
<router-view />
|
|
|
|
|
</template>
|
|
|
|
|
|
2026-03-28 16:02:59 -05:00
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
2026-03-31 08:31:40 -05:00
|
|
|
import { storeToRefs } from 'pinia'
|
|
|
|
|
import { useAuthStore } from './stores/auth.js'
|
2026-03-28 16:02:59 -05:00
|
|
|
import SideNavBar from './components/SideNavBar.vue'
|
|
|
|
|
import TopAppBar from './components/TopAppBar.vue'
|
2026-03-31 08:31:40 -05:00
|
|
|
|
|
|
|
|
const auth = useAuthStore()
|
|
|
|
|
const { isAuthenticated } = storeToRefs(auth)
|
2026-03-28 16:02:59 -05:00
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
.fade-enter-active,
|
|
|
|
|
.fade-leave-active {
|
2026-03-30 20:51:29 -05:00
|
|
|
transition: opacity 0.15s ease;
|
2026-03-28 16:02:59 -05:00
|
|
|
}
|
|
|
|
|
.fade-enter-from,
|
|
|
|
|
.fade-leave-to {
|
|
|
|
|
opacity: 0;
|
|
|
|
|
}
|
|
|
|
|
</style>
|