Files
pihkaal-me/app/app.vue

95 lines
2.1 KiB
Vue

<script setup lang="ts">
const TITLE = "Pihkaal";
const DESCRIPTION =
"23yo developer from Brittany. I love programming and taking photos.";
const URL = "https://pihkaal.me";
const IMAGE = `${URL}/thumbnail.png`;
const { locale, locales } = useI18n();
const app = useAppStore();
const pageTitle = computed(() => {
if (!app.booted) return TITLE;
const name = app.screen.charAt(0).toUpperCase() + app.screen.slice(1);
return `${name} - Pihkaal`;
});
const ogLocale = computed(
() => locales.value.find((l) => l.code === locale.value)?.language ?? "en-US",
);
const ogLocaleAlternate = computed(() =>
locales.value.filter((l) => l.code !== locale.value).map((l) => l.language!),
);
useSeoMeta({
title: pageTitle,
description: DESCRIPTION,
author: "pihkaal",
robots: "index, follow",
ogType: "website",
ogTitle: TITLE,
ogDescription: DESCRIPTION,
ogImage: IMAGE,
ogImageType: "image/png",
ogImageWidth: 1200,
ogImageHeight: 630,
ogUrl: URL,
ogSiteName: TITLE,
ogLocale,
ogLocaleAlternate,
themeColor: "#181818",
twitterCard: "summary_large_image",
twitterTitle: TITLE,
twitterDescription: DESCRIPTION,
twitterImage: IMAGE,
});
useHead({
htmlAttrs: { lang: locale },
link: [{ rel: "canonical", href: URL }],
script: [
{
type: "application/ld+json",
innerHTML: JSON.stringify({
"@context": "https://schema.org",
"@type": "Person",
name: "pihkaal",
url: URL,
email: "hello@pihkaal.me",
jobTitle: "Full-Stack Developer",
description: DESCRIPTION,
image: IMAGE,
sameAs: [
"https://git.pihkaal.me",
"https://linkedin.com/in/stevancorre/",
],
}),
},
{
type: "application/ld+json",
innerHTML: JSON.stringify({
"@context": "https://schema.org",
"@type": "WebSite",
name: TITLE,
url: URL,
description: DESCRIPTION,
author: {
"@type": "Person",
name: "pihkaal",
url: URL,
},
}),
},
],
});
</script>
<template>
<UApp>
<NuxtPage />
</UApp>
</template>