// mentors.jsx — Jay Brunswick + PG Banker // Two-mentor model; rich bios surfaced on Home + Profile. const { useState: useStateM, useEffect: useEffectM } = React; const { Card, DisplayHeading, Chip } = window.LAUNCH_SCREENS_1; const MENTORS = [ { id: 'jay', lbl: 'JB', name: 'Jay Brunswick', role: 'PRODUCER · A&R · VINTAGE MUSIC GROUP', color: '#C72820', palette: ['#C72820', '#7A1A0A'], rate: 100, credits: ['RIAA Gold certified songwriter', '170+ cuts to his name', '2 Billboard Top 40 country singles'], bio: "Jay is an RIAA Gold certified songwriter with over 170 cuts and two Billboard Top 40 country singles. He hears arrangement and structure before anything else — if your song has bones, he'll find them. Honest in feedback, blunt about the market, generous with time.", availability: '2 SLOTS THIS WEEK', }, { id: 'pg', lbl: 'PG', name: 'PG Banker', role: 'SONGWRITER · PRODUCER · LOGIC PRO CERTIFIED', color: '#7A5AE0', palette: ['#7A5AE0', '#150A33'], rate: 100, credits: ['Logic Pro certified engineer', '1,000+ track placements', 'Placed on Fox Sports & major networks'], bio: "PG is a songwriter, Logic Pro certified engineer and music producer with over 1,000 track placements on networks like Fox Sports. Knows what makes a chorus stick, what kills a verse, and how to make a track sync-ready from the first bar. Best for artists ready to sharpen lyrics, topline, and production.", availability: '4 SLOTS THIS WEEK', }, ]; // ──────────────────────────────────────────────────────── // MentorAvatar — circular portrait with deep-field bg + initials // ──────────────────────────────────────────────────────── function MentorAvatar({ mentor, size = 56 }) { const fontSize = Math.max(14, size * 0.32); // Coaches loaded from Supabase may not carry a 2-stop palette — derive one. const palette = (mentor.palette && mentor.palette.length >= 2) ? mentor.palette : [mentor.color || '#C72820', '#0A0A0A']; return (
{/* deep field bg */}
{/* color tint */}
{/* highlight */}
{/* initials */}
{mentor.lbl}
); } // ──────────────────────────────────────────────────────── // MentorsBlock — full-bio card list for Profile / dedicated section // ──────────────────────────────────────────────────────── function MentorsBlock({ theme, onBookSession }) { // Roster comes from the Supabase `coaches` table (admin-managed). Adding a // coach there makes it appear here automatically. Falls back to the built-in // list in demo mode / while loading. const [mentors, setMentors] = useStateM(MENTORS); useEffectM(() => { let alive = true; if (window.LAUNCH_USER && window.LAUNCH_USER.fetchCoaches) { window.LAUNCH_USER.fetchCoaches().then((list) => { if (alive && list && list.length) setMentors(list); }); } return () => { alive = false; }; }, []); const minRate = mentors.reduce((lo, m) => Math.min(lo, m.rate || 100), Infinity); return (
YOUR MENTORS · {mentors.length} ${isFinite(minRate) ? minRate : 100}/HR · BOOK ANY TIME
{mentors.map(m => ( {/* head row */}
{m.name}
{m.role}
● {m.availability}
{/* bio */}
{m.bio}
{/* credits */}
{m.credits.map((c, i) => (
{c.toUpperCase()}
))}
{/* CTA row */}
))}
); } window.LAUNCH_MENTORS = { MENTORS, MentorAvatar, MentorsBlock };