mod-portal-v2/app/app.vue

69 lines
1.2 KiB
Vue
Raw Permalink Normal View History

2026-07-27 10:34:50 +02:00
<script setup>
2026-08-02 05:43:09 +02:00
import { onMounted } from 'vue'
2026-07-27 10:34:50 +02:00
useHead({
link: [
{ rel: 'stylesheet', href: '/css/main.css' }
]
})
2026-08-02 05:43:09 +02:00
const { isInitialized, verifySession } = useAuth()
onMounted(async () => {
if (!isInitialized.value) {
await verifySession()
}
})
2026-07-27 10:34:50 +02:00
</script>
2026-08-02 05:43:09 +02:00
2026-07-27 10:34:50 +02:00
<template>
2026-07-29 05:25:53 +02:00
<UApp>
2026-08-02 05:43:09 +02:00
<div v-if="!isInitialized" class="loading-container">
<span class="spinner sm"></span>
</div>
2026-08-03 05:39:08 +02:00
<div v-else class="app-viewport" style="padding-top: 5rem;">
<main class="app-content" style="min-height: calc(100vh - 12rem);">
2026-07-29 05:25:53 +02:00
<NuxtPage />
</main>
2026-08-03 05:39:08 +02:00
<div class="footer-wrapper">
<MainFooter />
</div>
2026-07-29 05:25:53 +02:00
</div>
</UApp>
</template>
<style scoped>
2026-08-02 05:43:09 +02:00
.loading-container {
display: flex;
2026-08-03 05:03:55 +02:00
flex-direction: column;
2026-08-02 05:43:09 +02:00
justify-content: center;
align-items: center;
min-height: 100vh;
2026-08-05 06:36:58 +02:00
padding-top: 5rem;
2026-08-02 05:43:09 +02:00
}
2026-08-03 05:03:55 +02:00
.app-viewport,
.app-viewport > * {
width: 100% !important;
}
2026-07-29 05:25:53 +02:00
.app-viewport {
2026-08-03 05:03:55 +02:00
display: block !important;
2026-07-29 05:25:53 +02:00
min-height: 100vh;
2026-08-03 05:03:55 +02:00
padding-top: 5rem;
2026-07-29 05:25:53 +02:00
}
.app-content {
2026-08-03 05:03:55 +02:00
width: 100%;
max-width: 1280px;
margin: 0 auto;
min-height: calc(100vh - 12rem);
2026-07-29 05:25:53 +02:00
}
2026-08-03 05:39:08 +02:00
.footer-wrapper {
width: 100%;
2026-08-05 06:36:58 +02:00
margin-top: 8rem;
2026-08-03 05:39:08 +02:00
}
2026-07-29 05:25:53 +02:00
</style>