import Image from 'next/image' import Link from 'next/link' import { notFound } from 'next/navigation' import { getPayload } from 'payload' import React from 'react' import config from '@/payload.config' import type { Media, Product } from '@/payload-types' import { cestaKSouboru, formatujCenu, popisStavu } from '@/lib/format' import '../../styles.css' export const dynamic = 'force-dynamic' type Props = { params: Promise<{ slug: string }> } export async function generateMetadata({ params }: Props) { const polozka = await najdiPolozku((await params).slug) if (!polozka) return { title: 'Položka nenalezena' } return { title: `${polozka.nazev} — Reiner zbraně`, description: polozka.popis ?? undefined, } } export default async function DetailPolozky({ params }: Props) { const polozka = await najdiPolozku((await params).slug) if (!polozka) notFound() const obrazky = (polozka.obrazky ?? []) .map((radek) => radek.obrazek) .filter((o): o is Media => typeof o === 'object' && o !== null) return (

← Zpět na nabídku

{polozka.nazev}

{formatujCenu(polozka.cena)} {popisStavu(polozka.stav)}

{obrazky.length > 0 && (
{obrazky.map((obrazek) => { const varianta = obrazek.sizes?.detail const url = varianta?.url ?? obrazek.url const width = varianta?.width ?? obrazek.width const height = varianta?.height ?? obrazek.height if (!url || !width || !height) return null return ( {obrazek.alt ) })}
)} {polozka.parametry && polozka.parametry.length > 0 && ( {polozka.parametry.map((parametr) => ( ))}
{parametr.nazev} {parametr.hodnota}
)} {polozka.popis &&
{polozka.popis}
}
) } async function najdiPolozku(slug: string): Promise { const payload = await getPayload({ config: await config }) const { docs } = await payload.find({ collection: 'products', where: { slug: { equals: slug }, skryto: { not_equals: true }, }, depth: 1, limit: 1, }) return docs[0] ?? null }