Files
sori.studio/pages/pages/[slug].vue

39 lines
1.0 KiB
Vue

<script setup>
definePageMeta({
layout: 'page'
})
const route = useRoute()
const slug = computed(() => String(route.params.slug || ''))
const { data: page } = await useFetch(() => `/api/pages/${slug.value}`)
if (!page.value) {
throw createError({
statusCode: 404,
statusMessage: '페이지를 찾을 수 없습니다.'
})
}
onMounted(() => {
if (page.value?.renderMode === 'html_document') {
window.location.replace(`/pages/${page.value.slug}`)
}
})
</script>
<template>
<article v-if="page.renderMode !== 'html_document'" class="static-page mx-auto min-h-screen max-w-3xl px-6 py-16">
<p class="static-page__eyebrow text-xs font-semibold uppercase text-muted">
Page
</p>
<h1 class="static-page__title mt-4 text-5xl font-semibold leading-tight">
{{ page.title }}
</h1>
<ContentRenderer class="static-page__content mt-8">
<ContentMarkdownRenderer :content="page.content" />
</ContentRenderer>
</article>
<div v-else class="static-page__html-redirect min-h-screen" />
</template>