/** * ProgramCard (pure presentation). Generic card for podcasts / webinars / * events. Three densities — `default` (wide horizontal detail, archive * pages), `sm` (compact horizontal for chat-inline), and `portrait` * (vertical rail/strip card). * * `portrait` exists because mixed-content rails MUST share ONE card anatomy * (2026 card-UI practice: a rail mixes content types, never card layouts — * mixing orientations/aspects in one scroller is the anti-pattern). It * renders the SAME three zones as the other portrait entity cards * (CaseStudyCard et al.): wide media slot → fixed 72px title zone → fixed * 60px person/meta footer, p-6 / gap-6. The program's identity lives in the * Azeret Mono title and the date · duration meta line — not in a different * layout. * * The card writes NO click logic — callers wrap with their own anchor * and pass the resolved detail URL via `href`. */ import React from 'react'; import { type BaseProgramItem, type ProgramConfig, type ProgramMedia } from '../types/entities/program-types'; type CardSize = 'default' | 'sm' | 'portrait'; export declare function ProgramCardSkeleton({ size }: { size?: CardSize; }): React.JSX.Element; export interface ProgramCardProps { config: ProgramConfig; item: T; media?: ProgramMedia[]; renderMeta?: (item: T) => React.ReactNode; size?: CardSize; /** Portrait density: render the content-type chip. Mixed rails only; single-type rails pass false. Default true. */ showTypeBadge?: boolean; /** Detail URL resolved by the caller. */ href: string; /** When `_blank`, opens in a new tab. Set by chat dispatch via * `computeIsNewTab` so the inner `` matches the runtime * nav decision (cross-platform / embed → new tab). Defaults to * same-tab for non-chat callsites. */ target?: '_blank'; rel?: 'noopener noreferrer'; targetPlatform?: string | null; /** OG placeholder URL used by the compact branch when no cover. */ placeholderUrl?: string | null; wholeCardClickable?: boolean; className?: string; } export declare function ProgramCard({ config, item, media, renderMeta, size, showTypeBadge, href, target: targetProp, rel: relProp, targetPlatform, placeholderUrl: placeholderUrlProp, wholeCardClickable, className, }: ProgramCardProps): React.JSX.Element; export {}; //# sourceMappingURL=program-card.d.ts.map