Files
bewell-in-ua/app/[locale]/(root)/(shop)/pages/[slug]/page.tsx
2025-03-11 02:54:09 +02:00

66 lines
1.6 KiB
TypeScript

import {EntityLocale} from '@prisma/client'
import type {Metadata} from 'next'
import {notFound} from 'next/navigation'
import {Suspense} from 'react'
import {getPageEntityBySlug} from '@/actions/admin/entity'
import YoutubeComponent from '@/components/shared/youtube-component'
import {dump, normalizeData, thisLocale} from '@/lib/utils'
import {Skeleton} from '@/ui/skeleton'
type Props = {
params: Promise<{slug?: string}>
}
export const generateMetadata = async ({params}: Props): Promise<Metadata> => {
const {slug} = await params
const page = await getPageEntityBySlug(slug || '')
if (!page) {
notFound()
}
const {locales} = page
const locale: EntityLocale = await thisLocale(locales)
const {title, annotation} = locale
return {
title,
description: normalizeData(annotation, {
stripTags: true
})
}
}
export default async function Pages({params}: Props) {
const {slug} = await params
const page = await getPageEntityBySlug(slug || '')
if (!page) {
notFound()
}
const {locales} = page
const locale: EntityLocale = await thisLocale(locales)
const {title, annotation, body} = locale
return (
<div className='mb-12 mt-8'>
<div className='bw-page container max-w-[800px] text-lg text-brand-violet-950'>
<h1>{title}</h1>
<section className='min-h-[450px]'>
<Suspense fallback={<Skeleton className='h-full w-full' />}>
<YoutubeComponent id='qfg2UlQk__M' />
</Suspense>
</section>
<article
className='mt-6'
dangerouslySetInnerHTML={{
__html: ((annotation ?? '') + body) as string
}}
></article>
{/*{dump(locale)}*/}
</div>
</div>
)
}