Chat List Item

Pro

Inbox conversation row where unread chats are highlighted and new messages update the preview in place. Covers mentions, muted, pinned, drafts, typing, read receipts and an edit mode.

Preview

Installation

npx @lumioui/cli add pro/chat-list-item

Usage

import { ChatListItem } from "@/components/ui/chat-list-item/chat-list-item";
<ChatListItem />

Examples

Team channels

A team-chat sidebar in compact rows, green accent.

Messages inbox

A messaging inbox, green accent.

Marketplace edit mode

A marketplace inbox where each thread is about a listing, so the trailing slot shows its photo.

API reference

Prop Type Default
title* string

Contact, group or channel name.

—
avatar ImageSourcePropType

Avatar image. Ignored when leading is set.

—
fallback string

Initials for the avatar fallback.

—
leading React.ReactNode

Custom leading node (channel tile, StoryRing, group stack).

—
presence
"online" | "away" +2 "online" | "away" | "busy" | "offline"

Presence dot on the avatar.

—
message string

Last-message preview.

—
sender string

Prefix for the preview ("You", "Maya") — group chats and own messages.

—
messageIcon IconName

Glyph before the preview (photo, voice note, file).

—
previewLines 1 | 2

Preview line count. Default 1 (2 for a roomier inbox).

1
time string

Timestamp — "9:41 AM", "Tue", "12/03".

—
unreadCount number

Unread messages. 0 / undefined hides the badge.

0
unread boolean

Marked unread without a count — shows a dot.

false
mentioned boolean

Someone mentioned the viewer — adds an "@" badge.

false
muted boolean

Notifications muted — bell-off glyph, grey unread badge.

false
pinned boolean

Pinned to the top — pin glyph when there is nothing unread.

false
typing boolean | string

Typing now. true shows "typing", a string replaces it ("Maya is typing").

false
delivery ChatDelivery

Receipt for the viewer's own last message.

—
draft string

Unsent draft — replaces the preview with "Draft: …".

—
verified boolean

Verified badge after the title.

false
trailing React.ReactNode

Trailing node after the text column (listing thumbnail, call button).

—
variant "default" | "compact"

default 76pt two-line row · compact 52pt single line (channels).

"default"
selectionMode boolean

Edit mode — a check circle slides in and the row toggles selection.

false
selected boolean

Selected in edit mode.

false
onSelectedChange (selected: boolean) => void

Toggle handler for edit mode.

—
separator boolean

Hairline under the row, inset to the text column.

false
className string —