FeedbackCard
A client's feedback above their Inbox thread: the rating as stars, what's left to do, and Send review link while it can go.
States
The red wash of what needs a person for a rating of 3 or lower, link or no link: every rating gets the review link, so it says nothing about whether the studio has talked it through. The button shows only while the link can go: one is set, the client's email works, and they haven't had it.
Rated 3 or lower, link not sent yet
Feedback
Rated 3 or lower: Okami handed it to you. Talk it through with them.
Rated 3 or lower, link sent
Feedback
Rated 3 or lower: Okami handed it to you. Talk it through with them.
Review link sent 3 Nov.
Happy, link not sent yet
Feedback
Happy with their visit.
Review link sent
Feedback
Review link sent 3 Nov.
No review link set
Feedback
Add your review link in Settings › Studio to send it.
Asked, no answer yet
Feedback asked
Okami asked how their visit was. No answer yet.
import { FeedbackCard } from "@/components/shared/feedback-card";
<FeedbackCard
view={thread.feedback}
labels={labels}
onSend={() => sendReviewLinkAction(conversation.id)}
/>Guidelines
- The stars are the client's own rating; their words are in the thread below, never summarized on the card.
- The review link goes to every rating, never only the happy ones (Google's review policy, EU consumer law).
- Without a review link set, the card says where to add one instead of a button that can't work.
API
| Prop | Type | Default | Description |
|---|---|---|---|
| view | FeedbackView | — | The feedback as lib/feedback/view.ts reads it: the rating, when the link went, whether a link is set and whether it can go now. |
| labels | FeedbackCardLabels | — | The card's words in the reader's language; the dashboard's FeedbackCard fills them from Dashboard.feedback. |
| onSend | () => void | — | Sends the review link to the client. |
| busy | boolean | false | While the link is on its way: the button waits. |