import { useEffect, useState } from "react"; import { useParams, Link } from "react-router-dom"; import Layout from "@/components/Layout"; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { User, Calendar } from "lucide-react"; import NotFound from "./NotFound"; import { fetchBuilderOne } from "@/lib/builder"; export default function BlogPost() { const { slug } = useParams<{ slug: string }>(); const [post, setPost] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { let cancelled = false; (async () => { try { if (!slug) return; const entry = await fetchBuilderOne("blog-post", slug); if (!cancelled) setPost(entry?.data ? { ...entry.data, title: entry.data.title || entry.name } : null); } catch (e) { console.warn("Builder CMS blog post fetch failed:", e); } finally { if (!cancelled) setLoading(false); } })(); return () => { cancelled = true; }; }, [slug]); if (loading) return null; if (!post) return ; return (
{post.image && ( {post.title} )} {post.category && ( {post.category} )} {post.title} {post.excerpt && ( {post.excerpt} )}
{post.author && (
{post.author}
)} {post.date && (
{post.date}
)}
{post.body ? (
) : (

{post.excerpt}

)}
Back to Blog
); }