mirror of https://github.com/wg-easy/wg-easy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.4 KiB
63 lines
1.4 KiB
<template>
|
|
<ToastProvider>
|
|
<NuxtLayout>
|
|
<NuxtPage />
|
|
<ToastViewport
|
|
class="fixed bottom-0 right-0 z-[2147483647] m-0 flex w-[390px] max-w-[100vw] list-none flex-col gap-[10px] p-[var(--viewport-padding)] outline-none [--viewport-padding:_25px]"
|
|
>
|
|
<BaseToast ref="toastRef" />
|
|
</ToastViewport>
|
|
</NuxtLayout>
|
|
</ToastProvider>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
const toast = useToast();
|
|
const toastRef = useTemplateRef('toastRef');
|
|
toast.setToast(toastRef);
|
|
|
|
// make sure to fetch release early
|
|
useGlobalStore();
|
|
|
|
// Fetch site title from general configuration with a key for refreshing
|
|
const { data: generalConfig } = await useFetch('/api/admin/general', { key: 'site-title' });
|
|
|
|
// Compute the title with fallback
|
|
const siteTitle = computed(() => generalConfig.value?.siteTitle || 'WireGuard');
|
|
|
|
useHead({
|
|
bodyAttrs: {
|
|
class: 'bg-gray-50 dark:bg-neutral-800',
|
|
},
|
|
link: [
|
|
{
|
|
rel: 'manifest',
|
|
href: '/manifest.json',
|
|
},
|
|
{
|
|
rel: 'icon',
|
|
type: 'image/png',
|
|
href: '/favicon.png',
|
|
},
|
|
{
|
|
rel: 'apple-touch-icon',
|
|
href: '/apple-touch-icon.png',
|
|
},
|
|
],
|
|
meta: [
|
|
{
|
|
name: 'mobile-web-app-capable',
|
|
content: 'yes',
|
|
},
|
|
{
|
|
name: 'apple-mobile-web-app-capable',
|
|
content: 'yes',
|
|
},
|
|
{
|
|
name: 'apple-mobile-web-app-status-bar-style',
|
|
content: 'black-translucent',
|
|
},
|
|
],
|
|
title: siteTitle,
|
|
});
|
|
</script>
|
|
|