"use client"; import { useEffect, useState } from "react"; import { dxGet } from "./dx"; type EntryDetail = { submission_id: string | number; title?: string | null; brand?: string | null; model?: string | null; body?: string | null; specs?: any; gallery?: { directus_files_id: { id: string; filename_disk?: string } }[]; thumb?: { id: string }; }; function assetUrl(id?: string) { if (!id) return ""; return `/api/dx/assets/${id}`; } export default function BuyingGuideProduct({ id }: { id: string | number }) { const [rec, setRec] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { (async () => { setLoading(true); try { const data = await dxGet("items/bg_entries", { filter: JSON.stringify({ submission_id: { _eq: id } }), fields: [ "submission_id", "title", "brand", "model", "body", "specs", "thumb.id", "gallery.directus_files_id.id", ].join(","), limit: 1, }); setRec(data?.[0] || null); } finally { setLoading(false); } })(); }, [id]); if (loading) return
Loading…
; if (!rec) return
Not found.
; const title = rec.model || rec.title || "Product"; const images = [ rec.thumb?.id, ...(rec.gallery?.map(g => g.directus_files_id?.id).filter(Boolean) as string[]), ].filter(Boolean); return (

{rec.brand ? `${rec.brand} ` : ""}{title}

Open full page
{images.length > 0 && (
{images.map((id) => ( // eslint-disable-next-line @next/next/no-img-element ))}
)} {rec.body && (
)} {rec.specs && (
            {JSON.stringify(rec.specs, null, 2)}
            
)}
); }