44 lines
1.6 KiB
Vue
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>
|