opnform-host-nginx/client/pages/integrations/[slug].vue

96 lines
2.6 KiB
Vue

<template>
<div class="relative">
<div
v-if="(page && page.blocks && published) || loading"
class="w-full flex justify-center"
>
<div class="w-full md:max-w-3xl md:mx-auto px-4 pt-8 md:pt-16 pb-10">
<p class="mb-4 text-sm">
<UButton
:to="{ name: 'integrations' }"
variant="ghost"
color="gray"
class="mb-4"
icon="i-heroicons-arrow-left"
>
Other Integrations
</UButton>
</p>
<h1 class="text-3xl mb-2">
{{ page.Title }}
</h1>
<NotionPage
:block-map="page.blocks"
:loading="loading"
:block-overrides="blockOverrides"
:map-page-url="mapPageUrl"
/>
<p class="text-sm">
<NuxtLink
:to="{ name: 'integrations' }"
class="text-blue-500 hover:text-blue-700 inline-block"
>
Discover our other Integrations
</NuxtLink>
</p>
</div>
</div>
<div
v-else
class="w-full md:max-w-3xl md:mx-auto px-4 pt-8 md:pt-16 pb-10"
>
<h1 class="text-3xl">
Whoops - Page not found
</h1>
<UButton
:to="{name: 'index'}"
class="mt-4"
label="Go Home"
/>
</div>
<OpenFormFooter class="border-t" />
</div>
</template>
<script setup>
import CustomBlock from '~/components/pages/notion/CustomBlock.vue'
import { useNotionCmsStore } from '~/stores/notion_cms.js'
const blockOverrides = { code: CustomBlock }
const slug = computed(() => useRoute().params.slug)
const dbId = '1eda631bec208005bd8ed9988b380263'
const notionCmsStore = useNotionCmsStore()
const loading = computed(() => notionCmsStore.loading)
await notionCmsStore.loadDatabase(dbId)
await notionCmsStore.loadPageBySlug(slug.value)
const page = notionCmsStore.pageBySlug(slug.value)
const published = computed(() => {
if (!page.value) return false
return page.value.Published ?? page.value.published ?? false
})
const mapPageUrl = (pageId) => {
// Get everything before the ?
pageId = pageId.split('?')[0]
const page = notionCmsStore.pages[pageId]
const slug = page.slug ?? page.Slug ?? null
return useRouter().resolve({ name: 'integrations', params: { slug } }).href
}
defineRouteRules({
swr: 3600
})
definePageMeta({
stickyNavbar: true,
middleware: ["self-hosted"]
})
useOpnSeoMeta({
title: () => page.value.Name,
description: () => page.value['Summary - SEO description'] ?? 'Create beautiful forms for free. Unlimited fields, unlimited submissions.'
})
</script>