Review Card

Pro

Customer review card with avatar, date, star rating or score, photos and a verified badge. Long reviews expand in place, the helpful button counts up, and seller replies sit underneath.

Preview

Installation

npx @lumioui/cli add pro/review-card

Usage

import { ReviewCard } from "@/components/ui/review-card/review-card";
<ReviewCard />

Examples

Product

Reviews under a leather boot's product page in neutral ink: a photo review with the maker's reply, then a long one that clamps to four lines and grows in place.

Restaurant

Diner reviews for a neighbourhood trattoria, orange.

Service pro

A plumber's profile carousel of short quote cards, orange (work).

Stay

Guest reviews on a coastal guesthouse listing, teal.

API reference

Prop Type Default
author* string —
date* string

Display date — "Mar 2", "2 weeks ago".

—
rating* number —
body* string —
avatar ImageSourcePropType

Avatar image. Initials are used when absent.

—
authorMeta string

Line under the name — "Lisbon · 14 reviews".

—
ratingMax number

Scale of rating. Default 5.

5
ratingStyle "stars" | "score"

"stars" draws the star row; "score" draws a filled score tile ("9.0"). Default "stars".

"stars"
starTone "warning" | "foreground" | "primary"

Star colour. Default "warning".

"warning"
context string

Context line after the rating — "Stayed 3 nights · Couple", "Size 10 · Fits true".

—
title string —
maxLines number

Lines shown before "Read more". Default 4.

4
photos readonly ReviewPhoto[] —
onPhotoPress (index: number) => void —
verified boolean | string

true → "Verified purchase"; a string overrides the copy ("Verified stay").

—
helpfulCount number

Helpful votes from others (the viewer's vote is added on top). Omit with no handler to hide the toggle.

—
helpful boolean

Viewer's helpful vote (controlled).

—
defaultHelpful boolean false
onHelpfulChange (helpful: boolean) => void —
reply ReviewReply —
surface "plain" | "card"

"plain" sits in a list (hairline handled by the parent); "card" is a self-contained tile for carousels. Default "plain".

"plain"
className string —
children React.ReactNode

Extra footer content — ordered items, booked service.

—