import ComposerCard, { type ComposerCardProps, } from './components/Composer/Card' import ReceivedCard, { type ReceivedCardProps, } from './components/Received/Card' import SentCard, { type SentCardProps } from './components/Sent/Card' /** * Link previews (1P / 3P Link Apps) shown in the chat thread. Mirrors * the `LockedAttachment` API — render `LinkAttachment.Composer` while * drafting, `LinkAttachment.Sent` after posting, and * `LinkAttachment.Received` in the recipient's thread. Maps to the * "LinkApps" section of the messaging design system. * * Two visual layouts via the `layout` prop: * - **Featured** (default) — a hero thumbnail filling the card above the * chin, inside a fixed 290x250 box. Used by hero-image LinkApps * (Spotify with cover art, TikTok with a frame, etc.) and by link * previews carrying OG imagery. * - **Classic** — compact card with no hero thumbnail; title / * description / URL / CTA only, sized to its content. Used for LinkApp * embeds without artwork (FAQ, Form) and any link preview that lacks * OG imagery. * * Pass `accentColor` (a hex extracted from the thumbnail) to paint the card * and its bubble tail; the card derives its own WCAG AA text colour. * * For chat **document / image / video / audio attachments**, reach for * `MessageAttachment.{Image,Video,Audio,Pdf,File}` instead — those * render as bubbles with built-in viewers (zoom-capable image * lightbox, native PDF viewer, video / audio with download) and a * caption slot for accompanying text. */ const LinkAttachment = { Composer: ComposerCard, Sent: SentCard, Received: ReceivedCard, } export default LinkAttachment export type { ComposerCardProps, SentCardProps, ReceivedCardProps } export type { LinkAttachmentBaseProps, LinkAttachmentCta, LinkAttachmentLayout, LinkAttachmentStatus, } from './types'