Post Card

Pro

Feed post with author row, photo, carousel, video or link preview, and a caption that expands in place. Double-tap the photo and a heart appears there, then travels into the like button.

Preview

Installation

npx @lumioui/cli add pro/post-card

Usage

import { PostCard } from "@/components/ui/post-card/post-card";
<PostCard />

Examples

Photo feed

A photo feed.

Text thread

A text-first thread in neutral ink.

Creator video

A creator's video post on a music profile.

API reference

Prop Type Default
author* PostAuthor —
subtitle string

Location, "Sponsored", community name… under the author (feed layout).

—
time string

Relative timestamp — "2h", "Oct 3".

—
text string

Caption (feed) or body (thread).

—
media PostMedia —
layout "feed" | "thread"

feed — header, full-width media, actions, caption. thread — avatar column, text-first body, compact actions with repost.

"feed"
captionLines number

Lines the caption shows before "more". Default 2 (feed), 6 (thread).

—
likes number —
liked boolean —
defaultLiked boolean false
onLikedChange (liked: boolean) => void —
likedBy PostLikedBy[]

"Liked by noor.k and 1,283 others" with a face stack (feed only).

—
comments number —
onCommentPress () => void —
shares number —
onSharePress () => void —
saved boolean —
defaultSaved boolean false
onSavedChange (saved: boolean) => void —
reposts number

Thread layout: repost toggle + count.

—
reposted boolean —
defaultReposted boolean false
onRepostedChange (reposted: boolean) => void —
threadLine boolean

Thread layout: draws the rail down from the avatar to the next post.

false
onAuthorPress () => void —
onMorePress () => void —
onMediaPress () => void

Single tap on photo/carousel media (fires after the double-tap window).

—
onPlayingChange (playing: boolean) => void

Video poster play / pause.

—
onLinkPress (url: string) => void

Link preview tap.

—
className string —