import { Component, createSignal, onMount } from 'solid-js'; import { useParams } from '@solidjs/router'; import { initAnalytics, trackPageView } from '../hooks/useAnalytics'; import Footer from '../components/Footer'; interface BlogPost { slug: string; title: string; excerpt: string | null; content: string; authorName: string | null; coverImageUrl: string | null; tags: string[]; publishedAt: string; viewCount: number; } const BlogPostPage: Component = () => { const params = useParams(); const [post, setPost] = createSignal(null); const [loading, setLoading] = createSignal(true); const [notFound, setNotFound] = createSignal(false); onMount(async () => { initAnalytics(); try { const res = await fetch(`/api/blog/${params.slug}`); if (res.ok) { const data = await res.json(); setPost(data.post); trackPageView(`/blog/${params.slug}`, data.post.title); } else { setNotFound(true); } } catch { setNotFound(true); } finally { setLoading(false); } }); return (
{loading() ? (

Loading article...

) : notFound() || !post() ? (
← Back to Blog

Article Not Found

The article you're looking for doesn't exist or has been removed.

) : ( <>
← Back to Blog

{post()!.title}

{post()!.tags.length > 0 && ( )}
{post()!.coverImageUrl && (
{post()!.title}
)}
); }; export default BlogPostPage;