{firstName}
+Host
+New Tasting
+Create a blind tasting
+Blind Tasting
++ Challenge your palate. Invite friends. See who knows their wine. +
+ + Create Tasting+ + Live Now +
+ {liveEvents.map((event) => ( + +{event.wines.length}
+Wines
+{event.guests.length}
+Guests
+Quick Start
+{t.name}
++ {t.wineCount} wines · {t.difficulty} +
+ + ))} +Your Tastings
+ + {events.length === 0 ? ( +No tastings yet
+Create your first one above
+{event.title}
++ {timeAgo(event.createdAt)} · {event.wines.length} wines · {event.guests.length} guests +
++ Start from scratch or pick a template. +
+ + {/* From scratch */} + + + {templatesLoading ? ( ++ Set up the details for your tasting. +
+ + {/* Title */} + + + {/* Description */} + + + {/* Difficulty — 2x2 grid with 16px radius */} ++ What will your guests try to identify? +
++ {Math.floor(timePerWine / 60)}:{String(timePerWine % 60).padStart(2, "0")} per wine +
+ )} ++ Tap to add wines to your flight. +
+ + {/* Search */} ++ {searchQuery.trim().length >= 2 ? "No wines found" : "No wines in this category"} +
++ {wine.name} +
++ {wine.producer} · {wine.region} +
++ Everything look good? +
+ + {/* Event summary card */} +{description}
+ )} + ++ {wine.name} +
+{wine.producer}
++ Join Code +
++ {event.joinCode} +
+No guests yet. Share the join code.
+{bw.wine?.name ?? "Unknown"}
++ {bw.wine?.producer}{bw.wine?.vintage ? ` ${bw.wine.vintage}` : " NV"} · {bw.wine?.region}, {bw.wine?.country} +
+Tasting Complete
+No scores were recorded.
+Winebob
+Scan to join this tasting
+ + {/* QR Canvas */} ++ {event.joinCode} +
+{event.title}
+ + {/* Actions */} ++ {mode === "login" + ? "Sign in to host blind tasting events." + : "Create your host account."} +
++ By continuing, you agree to Winebob's Terms of Service and Privacy Policy. +
+{wine.name}
++ {wine.producer} · {wine.region}, {wine.country}{wine.vintage ? ` · ${wine.vintage}` : ""} +
+No wines found
+Try a different region or filter
+{featured.name}
+{featured.producer} · {featured.region}
+Tap a region to explore
+ )} +{wine.type}
+{wine.producer}{wine.vintage ? ` · ${wine.vintage}` : " · NV"}
+{wine.description}
+ )} +{wine.tastingNotes}
+{wine.foodPairing}
+{label}
+{value}
+ {sub &&{sub}
} ++ Contribute to the public wine library. +
+ + +{event.description}
} + +{joinError}
} + +Starts {date.toLocaleDateString("en-US", { weekday: "long", month: "long", day: "numeric" })}
+{date.toLocaleTimeString("en-US", { hour: "2-digit", minute: "2-digit" })}
+{event.participants.length} people waiting
+{event.title}
++ {revealedHints[revealedHints.length - 1].content} +
+{hint.content}
+ {hint.hintType} ++ {lastRevealed.wine.producer}{lastRevealed.wine.vintage ? ` · ${lastRevealed.wine.vintage}` : ""} · {lastRevealed.wine.region}, {lastRevealed.wine.country} +
+Sommelier is tasting...
+Hints will appear here
+Host Control Panel
+ + {/* Status: Scheduled */} + {event.status === "scheduled" && ( +{event.participants.length} participants waiting
+ +{lw.wine?.producer}{lw.wine?.vintage ? ` · ${lw.wine.vintage}` : ""}
++ {unreveledHints.length - 1} more hint{unreveledHints.length > 2 ? "s" : ""} remaining +
+ )} + + {/* Reveal wine button */} +{event.participants.length} participants · {event.wines.length} wines
+ + Back to Live Events + +You need a sommelier profile to host live events.
+ Become a Sommelier +Set up a live tasting for your audience.
+ + {/* ── Event Details ── */} +Event Details
+ + setTitle(e.target.value)} placeholder="Event title" className="input-field w-full touch-target" /> +What Viewers Guess
+Wines
+ {selectedWines.length > 0 && ( + {selectedWines.length} selected + )} +No wines found
Flight Order & Hints
+{sw.wine.name}
+{sw.wine.producer}
+{error}
+Join sommeliers tasting wine in real-time
+{event.description}
+ )} +No upcoming tastings
++ Check back later or become a sommelier to host your own. +
+ + Become a Sommelier → + +{dateStr.split(",")[0]}
+{date.getDate()}
+{event.description}
+ )} + +Host live tastings for the community
+Our community of wine experts
+No sommeliers yet
++ Be the first to create a sommelier profile and host live tastings. +
+{som.bio}
+ )} + + {/* Expertise badges */} + {som.expertise.length > 0 && ( +{session.user.email}
+{eventCount}
+Events
+{totalGuests}
+Guests
+{completedEvents}
+Completed
+Exploring
+{selectedRegion}
++ Create a free account to save favorites, join tastings, and build your cellar. +
+ ++ Finding your tasting... +
++ That join code doesn't match any active tasting event. +
+ + ← Back to Home + ++ Hosted by {hostName} +
+ {event.guests.length > 0 && ( ++ {event.guests.length} guest{event.guests.length !== 1 ? "s" : ""}{" "} + already joined +
+ )} ++ No account needed. Join instantly. +
++ Blind tasting made social. Join an event or host your own. +
++ Sign in required to host events +
++ Browse wines, build your cellar, join live global tastings, and discover new favorites. +
+ + ++ Free account — takes 10 seconds +
+Loading tasting...
+Event not found
++ This tasting may have been deleted or the link is incorrect. +
+ Back to Home ++ {event.description} +
+ )} ++ Wine #{event.currentWine} — Revealed +
++ {actual.producer}{actual.vintage ? ` · ${actual.vintage}` : " · NV"} +
++ {event.currentWine < event.wines.length + ? "Waiting for next wine..." + : "Last wine — waiting for results..."} +
++ Wine {event.currentWine} of {event.wines.length} +
++ {event.title} +
+Waiting for the reveal...
+
+
{error}
+{label}
+{actual}
+ {guessed && !isMatch && ( +{guessed}
+ )} +{event.title}
+ {myRank > 0 && ( ++ You placed #{myRank} of {ranked.length} +
+ )} ++ {g.displayName} + {g.id === guestId && ( + (you) + )} +
+${props.name}
+${props.country} · ${props.grapes}
+ ${count > 0 ? `${count} wines
` : ""} +${p.name}
+${p.region}, ${p.country}${p.founded ? ` · Est. ${p.founded}` : ""}
+ ${p.description ? `${p.description}
` : ""} + ${isFeatured ? `★ Featured Winery
` : ""} +${name}
+${cat}
++ Wine Regions of the World +
+