// Blog — index + inline post reader const BlogPage = ({setRoute}) => { const [activePost, setActivePost] = React.useState(null); if (activePost) { return setActivePost(null)} setActivePost={setActivePost} setRoute={setRoute}/>; } return ; }; const BlogIndex = ({setActivePost, setRoute}) => ( <> {/* Hero */}
Journal · Lab Notes From the Floor.

Hardware guides, terpene breakdowns, and brand-building playbooks from the Smoke Show Labs team.

{/* Post grid */}
{BLOG_POSTS.map((post, i) => { const colors = ["var(--color-cyan)", "var(--color-pink)", "var(--color-magenta)"]; const bgs = ["rgba(120,214,241,.08)", "rgba(236,142,190,.08)", "rgba(255,45,180,.08)"]; const c = colors[i % 3]; return ( ); })}
{/* Newsletter */} ); const BlogPost = ({post, onBack, setRoute}) => { const idx = BLOG_POSTS.findIndex(p => p.id === post.id); const colors = ["var(--color-cyan)", "var(--color-pink)", "var(--color-magenta)"]; const c = colors[idx % 3]; // Parse body — bold via **...** const renderBody = (text) => { return text.split("\n\n").map((para, i) => { if (!para.trim()) return null; // Replace **text** with bold spans const parts = para.split(/(\*\*[^*]+\*\*)/g).map((part, j) => { if (part.startsWith("**") && part.endsWith("**")) { return {part.slice(2,-2)}; } return part; }); return (

{parts}

); }); }; return ( <> {/* Back nav */}
{/* Post header */}
{post.tag} {post.date}
{post.title}

{post.excerpt}

{/* Divider */}
{/* Post body */}
{renderBody(post.body)}
{/* Related posts */}
— More from the floor
{BLOG_POSTS.filter(p => p.id !== post.id).map((p, i) => { const rc = colors[BLOG_POSTS.findIndex(x => x.id === p.id) % 3]; return ( ); })}
); }; const BlogNewsletter = () => { const [email, setEmail] = React.useState(""); const [sent, setSent] = React.useState(false); return (
Lab Notes · Subscribe Get the next drop.

Hardware guides, terpene breakdowns, and restock alerts. No fluff. Unsubscribe anytime.

{sent ? (
You're on the list.
) : (
{ e.preventDefault(); if(email) setSent(true); }} style={{display:"flex", gap:0, borderBottom:"1px solid var(--color-cyan)", maxWidth:480}}> setEmail(e.target.value)} placeholder="you@brand.co" required style={{ flex:1, background:"transparent", border:0, color:"var(--color-fg)", fontFamily:"var(--font-sans)", fontSize:15, padding:"10px 0", outline:"none", }} />
)}
); }; window.BlogPage = BlogPage;