# Review Prompt

Two-step review card that starts with a quick star or yes/no rating. Happy customers are invited to review you in the store, while lower scores open a short feedback form, then a calm thank-you.

> Composed · Pro · Feedback — React Native, Expo Go incompatible (dev build required).

## Install

```bash
npx @lumioui/cli add pro/review-prompt
```

## Import

```tsx
import { ReviewPrompt } from "@/components/ui/review-prompt/review-prompt";
```

## Variants

- `prompt` — After a moment: `npx @lumioui/cli add pro/review-prompt-prompt`

## Props

| Prop | Type | Notes |
| --- | --- | --- |
| `visible?` | `boolean` | Show/hide — hiding dims the card in place. |
| `onDismiss?` | `() => void` | Close button (and "Not now" when `onLater` is not set). |
| `onLater?` | `() => void` | "Not now" — snooze the prompt. Falls back to `onDismiss`. |
| `sentiment?` | `"stars" | "binary"` | Step 1 style: stars (default) or two answers. |
| `onRate?` | `(stars: number) => void` | The sentiment once it is committed. Stars: 1–5. Binary: 5 for yes, 1 for no. |
| `onStoreReview?` | `(stars: number) => void | Promise<unknown>` | The store ask was accepted — open the platform's review sheet here. |
| `onSubmit?` | `(stars: number) => void` | The flow resolved: after the store hand-off, or once the thank-you has held. |
| `onFeedback?` | `(stars: number, text: string, topics: string[]) => void | Promise<unknown>` | Private feedback for low scores. Return a promise to show the button busy. |
| `onStepChange?` | `(step: ReviewPromptStep) => void` | Fires on every step change. |
| `title?` | `string` | — |
| `message?` | `string` | — |
| `storeTitle?` | `string` | Step 2 copy for a happy score. |
| `storeMessage?` | `string` | — |
| `submitLabel?` | `string` | Store action. Default "Rate on the store". |
| `feedbackTitle?` | `string` | Step 2 copy for a low score. |
| `feedbackMessage?` | `string` | — |
| `topics?` | `readonly string[]` | Topic chips in the feedback form. |
| `feedbackLabel?` | `string` | Send action. Default "Send feedback". |
| `feedbackPlaceholder?` | `string` | Placeholder in the note field. |
| `thanksTitle?` | `string` | Thank-you copy after feedback is sent. |
| `thanksMessage?` | `string` | — |
| `storeThreshold?` | `number` | Lowest score routed to the store. Default 4. |
| `dismissLabel?` | `string` | "Not now" label. Default "Not now". |
| `noLabel?` | `string` | Binary answers. Default "Not really" / "Yes, love it". |
| `yesLabel?` | `string` | — |
| `defaultRating?` | `number` | Preselected rating. Default 0. |
| `ratingLabels?` | `readonly string[] | null` | One word per star under the row; null hides the word line. |
| `className?` | `string` | — |

## Icons rendered

- `check` — /icons.html?i=check
- `x` — /icons.html?i=x

Source: https://lumioui.com/components/review-prompt