import React, { useMemo } from "react"; type Person = { name: string; email?: string }; export type CourseInfo = { id: string; name: string; instructor?: Person; teachingAssistant?: Person; }; function gmailCompose(email: string, subject: string, body?: string) { const s = encodeURIComponent(subject); const b = body ? `&body=${encodeURIComponent(body)}` : ""; return `https://mail.google.com/mail/?view=cm&fs=1&to=${encodeURIComponent(email)}&su=${s}${b}`; } export function CourseInfoHeader({ course, className, }: { course: CourseInfo; className?: string; }) { const instructorLink = useMemo(() => { const p = course.instructor; if (!p?.email) return ""; return gmailCompose( p.email, `[Clare] Question about ${course.name}`, `Hi ${p.name},\n\nI have a question about ${course.name}:\n\n(Write your question here)\n\nThanks,\n` ); }, [course]); const taLink = useMemo(() => { const p = course.teachingAssistant; if (!p?.email) return ""; return gmailCompose( p.email, `[Clare] Help request for ${course.name}`, `Hi ${p.name},\n\nI need help with ${course.name}:\n\n(Write your question here)\n\nThanks,\n` ); }, [course]); const instructorName = course.instructor?.name ?? "N/A"; const taName = course.teachingAssistant?.name ?? "N/A"; return (
{course.name}
Instructor:{" "} {instructorLink ? ( e.stopPropagation()} > {instructorName} ) : ( {instructorName} )}
TA:{" "} {taLink ? ( e.stopPropagation()} > {taName} ) : ( {taName} )}
); }