/** * — THE portrait (rail/strip) card anatomy, shared by * EVERY entity card's `size="portrait"` density (case study, blog post, * customer interview, program, investor update, onboarding guide, …). * * One rail = one anatomy (2026 card-UI practice): identical zone boxes across * all content types — * media : aspect-[1200/630] slot + content-type chip overlay * title : fixed 72px zone, 3-line clamp (typography per entity via * `titleClassName` — e.g. Azeret Mono for programs) * footer : fixed 60px person zone (author avatar + name + subtitle, with * the optional bottom-right icon overlay — the case-study MSP * pattern) * Card surface, padding (p-6/gap-6) and the hover treatment (accent border + * accent shadow) are encoded HERE exactly once, so no per-card drift is * possible. Entity cards only MAP their row onto these props. * * Media rule ("our common way"): the REAL cover always wins. Wide covers * (OG-style 1200×630) fill the slot `object-cover`; a non-wide cover (square * podcast artwork) renders contained on an `useImageEdgeColor` background — * the SAME edge-sampled fill the media/news cards use (OGLinkPreview) — never * a flat filler and never the generic placeholder while a real image exists. * The cover → placeholder → hide resolution is the shared * `useCoverImageFallback` chain (one fallback logic for all entity cards). * * The content-type chip is the common and lives ABOVE the title * (an eyebrow inside the title zone), never overlaid on the artwork — branded * covers carry their own marks (Flamingo logo top-left) that an overlay would * collide with. */ import React from 'react'; export interface EntityPortraitPerson { name: string; avatarUrl?: string | null; subtitle?: string | null; /** Small round overlay on the avatar's bottom-right corner (e.g. MSP icon). */ iconOverlayUrl?: string | null; } export interface EntityPortraitCardProps { href: string; target?: '_blank'; rel?: string; /** Content-type chip ('Case Study', 'Podcast', …). OMIT to hide the chip — * single-type rails don't need per-card type identification; only mixed * rails pass it. */ typeLabel?: string; imageUrl?: string | null; /** Branded wide OG fallback — used when `imageUrl` is missing, errors, or * isn't wide. */ placeholderUrl?: string | null; imageAlt: string; title: string; /** Typography override for the title (entity identity), zone box unchanged. */ titleClassName?: string; person?: EntityPortraitPerson | null; className?: string; } export declare function EntityPortraitCard({ href, target, rel, typeLabel, imageUrl, placeholderUrl, imageAlt, title, titleClassName, person, className, }: EntityPortraitCardProps): React.JSX.Element; //# sourceMappingURL=entity-portrait-card.d.ts.map