From af17a196bf34a152efc32365c8961b21ee0090d0 Mon Sep 17 00:00:00 2001 From: limes Date: Wed, 26 Aug 2026 00:00:39 +0200 Subject: [PATCH 01/11] feat: fix seo for social media previews --- nuxt.config.ts | 1 + src/composables/customSeoMeta.ts | 36 ++++++++++++++++++++++++++ src/layouts/default.vue | 5 ---- src/layouts/docs.vue | 8 ------ src/pages/account/forgot-password.vue | 2 ++ src/pages/account/index.vue | 4 +-- src/pages/account/login.vue | 2 ++ src/pages/account/miieditor.client.vue | 4 +-- src/pages/account/register.vue | 2 ++ src/pages/account/reset-password.vue | 2 ++ src/pages/account/upgrade.vue | 5 +--- src/pages/blog/[slug].vue | 15 ++++------- src/pages/blog/index.vue | 5 ++-- src/pages/docs/[...slug].vue | 13 +++------- src/pages/docs/error/[code].vue | 12 +++------ src/pages/docs/errors.vue | 21 +++------------ src/pages/docs/install.vue | 22 +++------------- src/pages/docs/welcome.vue | 22 +++------------- src/pages/index.vue | 2 ++ src/pages/nso-legacy-pack.vue | 1 + src/pages/progress.vue | 5 ++++ src/pages/terms/[slug].vue | 12 +++------ 22 files changed, 86 insertions(+), 115 deletions(-) create mode 100644 src/composables/customSeoMeta.ts diff --git a/nuxt.config.ts b/nuxt.config.ts index 3833db3..6a786fa 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -156,6 +156,7 @@ export default defineNuxtConfig({ { name: 'application-name', content: 'Pretendo Network' }, { name: 'msapplication-TileColor', content: '#1b1f3b' }, { name: 'theme-color', content: '#1b1f3b' }, + { property: 'og:title', content: 'Pretendo Network' }, { property: 'og:description', content: diff --git a/src/composables/customSeoMeta.ts b/src/composables/customSeoMeta.ts new file mode 100644 index 0000000..fa4f897 --- /dev/null +++ b/src/composables/customSeoMeta.ts @@ -0,0 +1,36 @@ +import type { UseSeoMetaInput } from '@unhead/vue'; + +export type CustomSeoMetaOptions = UseSeoMetaInput & { + subsection?: string; +}; + +export default function (args?: CustomSeoMetaOptions) { + let newTitleTemplate = ''; + + switch (args?.subsection) { + case ('account'): { + newTitleTemplate = 'Account | Pretendo Network'; + break; + } + case ('terms'): { + newTitleTemplate = 'Terms | Pretendo Network'; + break; + } + case ('blog'): { + newTitleTemplate = 'Blog | Pretendo Network'; + break; + } + case ('docs'): { + newTitleTemplate = 'Docs | Pretendo Network'; + break; + } + default: { + newTitleTemplate = 'Pretendo Network'; + } + } + + const newTitle = args?.title ? `${args?.title} | ${newTitleTemplate}` : newTitleTemplate; + + useHead({ title: newTitle }); + useSeoMeta({ ...args, title: newTitle, ogTitle: newTitle, twitterTitle: newTitle, ogDescription: args?.description, twitterDescription: args?.description, twitterImage: args?.ogImage }); +} diff --git a/src/layouts/default.vue b/src/layouts/default.vue index 5b751a0..890f81f 100644 --- a/src/layouts/default.vue +++ b/src/layouts/default.vue @@ -1,9 +1,4 @@