/** * CaseStudyCard (pure presentation). Two densities — `default` (vertical * detail) and `sm` (compact horizontal for chat-inline). * * The card writes NO click logic — callers wrap with their own anchor * and pass the resolved detail URL via `href`. * * Image-fallback chain: * `study.featured_image` → `placeholderUrl` (caller passes * `useOgPlaceholderUrl(...)`) → `bg-ods-bg`. */ import React from 'react'; import type { CaseStudy } from '../../../types/case-study'; export interface CaseStudyCardProps { study: CaseStudy; /** Detail URL resolved by the caller. */ href: string; /** When `_blank`, opens in a new tab. Set by chat dispatch via * `computeIsNewTab`. Defaults to same-tab. */ target?: '_blank'; rel?: 'noopener noreferrer'; targetPlatform?: string | null; /** OG placeholder URL, used when `study.featured_image` is missing. */ 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; } /** `portrait` shares the default skeleton shape — the portrait anatomy uses the * same zone boxes (media aspect → 72px title → 60px person footer). */ export declare function CaseStudyCardSkeleton({ size }: { size?: 'default' | 'sm' | 'portrait'; }): React.JSX.Element; export declare function CaseStudyCard({ study, href, target: targetProp, rel: relProp, targetPlatform, placeholderUrl: placeholderUrlProp, size, showTypeBadge, className, }: CaseStudyCardProps): React.JSX.Element; //# sourceMappingURL=case-study-card.d.ts.map