--- import BaseLayout from './BaseLayout.astro'; import Header from '../components/Header.astro'; import Footer from '../components/Footer.astro'; import Newsletter from '../components/Newsletter.astro'; interface Props { frontmatter: { title: string; description?: string; pubDate: Date; updatedDate?: Date; heroImage?: string; category?: string; // Keep category for potential filtering, but don't display in header tags?: string[]; readTime?: string; draft?: boolean; author?: string; // Keep author field if needed elsewhere // Add other potential frontmatter fields as optional github?: string; live?: string; technologies?: string[]; } } const { frontmatter } = Astro.props; const formattedPubDate = frontmatter.pubDate ? new Date(frontmatter.pubDate).toLocaleDateString('en-us', { year: 'numeric', month: 'long', day: 'numeric', }) : 'N/A'; const formattedUpdatedDate = frontmatter.updatedDate ? new Date(frontmatter.updatedDate).toLocaleDateString('en-us', { year: 'numeric', month: 'long', day: 'numeric', }) : null; // Default image if heroImage is missing const displayImage = frontmatter.heroImage || '/images/placeholders/default.jpg'; ---
{/* Display Draft Badge First */} {frontmatter.draft && DRAFT} {/* Title (Smaller) */}

{frontmatter.title}

{/* Description */} {frontmatter.description &&

{frontmatter.description}

} {/* Metadata (Date, Read Time) */} {/* Tags */} {frontmatter.tags && frontmatter.tags.length > 0 && ( )}
{/* Display Hero Image */} {displayImage && (
{frontmatter.title}
)} {/* Main Content Area */}
{/* Renders the actual markdown content */}
{/* Future Feature Placeholders remain commented out */} {/* ... */}
{/* Sidebar */}