/** * BlogCard (pure presentation). * * Two densities: * - `default`: full vertical card with cover, title, summary, author/date * footer. * - `sm`: compact horizontal card (~80px tall) for chat-inline rendering. * * The card writes NO click logic — callers wrap with their own anchor * (e.g. hub's `` or lib's ``) * and pass the resolved detail URL via `href`. * * Image-fallback chain: * `post.featured_image` → `placeholderUrl` (caller passes * `useOgPlaceholderUrl(...)` from the hub OR any pre-resolved URL) → * `bg-ods-bg` (via the slot's background). */ import React from 'react'; import type { BlogPostSummary } from '../../../types/blog'; export interface BlogCardProps { post: BlogPostSummary; /** Detail URL resolved by the caller (e.g. `buildContentURL`). */ href: string; /** When `_blank`, opens in a new tab. Set by chat dispatch via * `computeIsNewTab`. Defaults to same-tab. */ target?: '_blank'; rel?: 'noopener noreferrer'; /** Platform that owns `href`. Used by parent wrappers; the card * itself doesn't read it but exposes the prop for the standard * pure-presentation contract. */ targetPlatform?: string | null; /** Placeholder URL when `post.featured_image` is missing. Caller * resolves via `useOgPlaceholderUrl` (hub) or a static asset. */ placeholderUrl?: string | null; size?: 'default' | 'sm' | 'portrait'; /** Portrait density: render the content-type chip. Mixed rails only; single-type rails pass false. Default true. */ showTypeBadge?: boolean; className?: string; /** Surfaces a "Video" badge in compact mode. */ hasEmbeddedVideo?: boolean; /** Optional render-prop for the title-area anchor in `default` mode. * When omitted the title renders as plain text (caller wraps the * whole card if it wants a link). */ priority?: boolean; } /** `portrait` shares the default skeleton shape (same zone boxes). */ export declare function BlogCardSkeleton({ size }: { size?: 'default' | 'sm' | 'portrait'; }): React.JSX.Element; export declare function BlogCard({ post, href, target: targetProp, rel: relProp, targetPlatform, placeholderUrl: placeholderUrlProp, size, showTypeBadge, className, hasEmbeddedVideo, priority, }: BlogCardProps): React.JSX.Element; //# sourceMappingURL=blog-card.d.ts.map