PostFeedRow
3 variants. Open one in isolation: use the link on each card.
LinkPost
Open alone →Note
Open alone → When teaching or designing APIs, anchor on problems your reader actually hits—not abstract shapes they forget by Tuesday.
SecretNote
Open alone → Secret — not listed in public feeds
Draft — visible only with dev:secrets When teaching or designing APIs, anchor on problems your reader actually hits—not abstract shapes they forget by Tuesday.
---import Badge from '../0_atoms/Badge.astro'import BodyText from '../0_atoms/BodyText.astro'import Date from '../0_atoms/Date.astro'import PostTypeLabel from '../1_molecules/PostTypeLabel.astro'import { type FeedPost, normalizeFeedPostPublishedAt } from '../../lib/feed-types'
interface Props { post: FeedPost}
const { post: postProp } = Astro.propsconst post = normalizeFeedPostPublishedAt(postProp)---
<div class="relative cursor-pointer border-b border-border mb-6 pb-6"> <div class="text-xs mb-1"> <PostTypeLabel postType={post.postType} secret={post.secret === true} /> </div> <a href={post.url} class="font-serif font-medium text-lg leading-snug text-ink no-underline stretched-link" > {post.title} </a> { post.description && ( <BodyText variant="muted" label={post.description} class="text-sm mt-1 line-clamp-3" /> ) } <div class="mt-2 flex flex-wrap items-center gap-2"> <Date date={post.publishedAt} /> { post.tags.map(tag => ( <Badge href={`/tags/${tag}`} class="relative z-10" label={`#${tag}`} /> )) } </div></div>