{name}
- {status &&{coachName}
+ {resolveRating(coach) ? ( + +
+
{about}
} - {locations.length > 0 && ( -Select a time to book quickly.
+No upcoming private slots in the next two weeks.
+ ) : null} +Join a class with available spots.
+{error}
: null} + + ); }; -const buildQueryParams = (search: string, location: string) => ({ +const PendingCoachRow = ({ coach }: { coach: PlayerCoach }) => { + const initials = resolveName(coach).slice(0, 2).toUpperCase(); + const record = coach as Record{resolveName(coach)}
+Awaiting approval · Requested {requestLabel}
+Roster
-My coaches
-- Keep track of the coaches you are working with and jump to their profiles quickly. +
My Coaches
+Book your next lesson fast
++ Tap a slot on a coach card to prefill the booking button instantly.
+Connected coaches
+{confirmedCoaches.length}
+Pending approvals
+{pendingCoaches.length}
+Skip discovery mode—this page is built to confirm your next lesson quickly.
+Select a time on any card to activate the booking button.
+Pending Approval
+Requests that are awaiting coach confirmation.
+-
+ {pendingCoaches.map((coach) => (
+
My Coach
+{coachName}
+Select a time to book quickly.
+No upcoming private slots in the next two weeks.
+ ) : null} +Join a class with available spots.
+{error}
: null} + + +Player Experience
-Find Your Perfect Coach
-- Get matched with certified tennis professionals in your area. -
-My Coaches
+Book your next lesson in seconds
++ See real availability, pick a time, and confirm without leaving this page. +
+Connected coaches
+{confirmedMyCoaches.length}
+Pending approvals
+{pendingCoaches.length}
+Tap a slot on a coach card to prefill the booking button instantly.
+Player Experience
+{heroTitle}
+{heroSubtitle}
+-
+
- Available Coaches +
- {heroStats.available.toLocaleString()} +
- Avg Rating +
- {heroStats.avgRating ?? "—"} +
- Avg Hourly Rate +
- {heroStats.avgHourlyRate ?? "—"} +
- Lessons Booked +
- {heroStats.lessons ?? "—"} +
Select a time on any card to activate the booking button.
+-
-
- Available Coaches -
- {heroStats.available.toLocaleString()} -
- Avg Rating -
- {heroStats.avgRating ?? "—"} -
- Avg Hourly Rate -
- {heroStats.avgHourlyRate ?? "—"} -
- Lessons Booked -
- {heroStats.lessons ?? "—"} -