/* ============================================================================
MOWDEW LIVE DEMO — "Reviews" (the 6th synchronized flow)
Fires at PEAK TRUST — right after the invoice is paid. The homeowner is
asked once; the sentiment FORKS to protect the rating:
thumbs-up → posts a public 5★ review → owner notified (public)
thumbs-down → a PRIVATE fix-it note → owner notified (private, off the
public rating)
World/actions/tracker/hints live in Mowdew Live Demo.html; per-phone UI
here, mounted from the demo phone shells.
========================================================================= */
function Stars({ n = 5, size = 16, color = '#7C6FF0' }) {
return (
{Array.from({ length: n }).map((_, i) => )}
);
}
/* ─── HOMEOWNER · the ask + sentiment fork (sits on the visit feed) ──── */
function HomeReviewCard({ world, act }) {
// only at peak trust — once the month is paid
if (world.invoice !== 'paid') return null;
const r = world.review;
if (!r) {
return (
Happy with Marco's work?
Balanced water, clean pool — looked like a good one.
WE ASK SPARINGLY · ONCE IN A WHILE
);
}
if (r === 'up') {
return (
Thank you!
Posted to Google — it helps Marco & Diego reach more neighbors.
);
}
// private fix-it
return (
Thanks — Diego will make it right
Sent privately to Diego — he reaches out personally. Never posted publicly.
Stays between you and Diego
);
}
/* ─── OWNER · the review landing (sits in the Inbox tab) ─────────────── */
function OwnerReviewCard({ world }) {
const r = world.review;
if (!r) return null;
if (r === 'up') {
return (
Reviews
Emma Walsh
POSTED · GOOGLE
A new 5★ review just went live — straight to your Google listing.
);
}
return (
Reviews
Emma Walsh
Private feedback · just now
FIX-IT NOTE
Came to you privately — off your public rating, so you can make it right first.