···1+/**
2+ * EmptyProfileState Component
3+ *
4+ * Displays enhanced empty state for user profiles with no reviews.
5+ * Distinguishes between existing Drydown users (who haven't posted reviews yet)
6+ * and non-users (who can be invited to try the app).
7+ */
8+9+interface EmptyProfileStateProps {
10+ profileHandle: string
11+ profileDid: string
12+ isLikelyNonUser: boolean
13+ onInviteClick: () => void
14+}
15+16+export function EmptyProfileState({
17+ profileHandle,
18+ isLikelyNonUser,
19+ onInviteClick,
20+}: EmptyProfileStateProps) {
21+ // Simple empty state for existing users with no reviews yet
22+ if (!isLikelyNonUser) {
23+ return (
24+ <div className="reviews-empty">
25+ <p>No reviews yet.</p>
26+ </div>
27+ )
28+ }
29+30+ // Enhanced empty state for non-users with invite CTA
31+ return (
32+ <div className="empty-profile-state">
33+ <h2 className="empty-profile-state-title">
34+ This user hasn't tried Drydown yet
35+ </h2>
36+ <p className="empty-profile-state-description">
37+ Drydown is an app for creating detailed fragrance reviews that capture
38+ how scents evolve over time. Reviews are stored in your personal data
39+ server and can be shared across the AT Protocol network.
40+ </p>
41+ <div className="empty-profile-state-cta">
42+ <button onClick={onInviteClick}>Invite @{profileHandle}</button>
43+ </div>
44+ </div>
45+ )
46+}