Files
moonwell-web/resources/js/Layouts/PortalLayout.vue
T
2026-07-25 18:36:45 +04:00

44 lines
1.6 KiB
Vue

<script setup>
import { Head } from '@inertiajs/vue3';
import { onMounted } from 'vue';
import SiteFooter from '../Components/SiteFooter.vue';
import SiteHeader from '../Components/SiteHeader.vue';
import Background from '../Pages/Landing/Components/Background.vue';
defineProps({
site: { type: Object, required: true },
auth: { type: Object, required: true },
urls: { type: Object, required: true },
flash: { type: Object, default: () => ({}) },
});
onMounted(() => {
document.documentElement.lang = 'ru';
document.body.dataset.variant = 'forest';
});
</script>
<template>
<Head>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@400;500;600;700&family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
</Head>
<Background />
<div class="portal-shell">
<SiteHeader :site="site" :auth="auth" :urls="urls" />
<div v-if="flash.status || flash.error" class="wrap portal-alerts" aria-live="polite">
<div v-if="flash.status" class="portal-alert portal-alert--success">{{ flash.status }}</div>
<div v-if="flash.error" class="portal-alert portal-alert--error">{{ flash.error }}</div>
</div>
<main class="portal-main">
<slot />
</main>
<SiteFooter :site="site" :urls="urls" />
</div>
</template>