import React from 'react'; import type { ClubDetail } from '@types'; interface ClubDetailModalProps { isOpen: boolean; onClose: () => void; clubDetail: ClubDetail | null; } const ClubDetailModal: React.FC = ({ isOpen, onClose, clubDetail }) => { if (!isOpen || !clubDetail) { return null; } // Helper to format semester cost const formatSemesterCost = (cost: number | null): string => { if (cost === null) { return 'N/A'; } if (cost === 0) { return 'Free'; } // Assuming the cost is a simple number, you might want to add currency formatting // e.g., using Intl.NumberFormat if it's a monetary value with a specific currency. // For now, just displaying the number. return String(cost); // Or `cost.toFixed(2)` if it's meant to be currency-like }; return (
e.stopPropagation()}>

{clubDetail.name}

{clubDetail.name}

ID: {clubDetail.id}

Academic Year: {clubDetail.academicYear}

Category: {clubDetail.category}

Grades: G{clubDetail.grades.min} - G{clubDetail.grades.max}

Schedule: {clubDetail.schedule}

Meeting Information

Day: {clubDetail.meeting.day}

Time: {clubDetail.meeting.startTime} - {clubDetail.meeting.endTime}

Location: {clubDetail.meeting.location.room} ({clubDetail.meeting.location.block}, {clubDetail.meeting.location.site})

Duration: {clubDetail.duration.startDate} to {clubDetail.duration.endDate} ({clubDetail.duration.isRecurringWeekly ? "Recurring Weekly" : "Fixed Duration"})

Description

{clubDetail.description}

{/* Display Semester Cost if it's not null */} {/* The API defines semesterCost as 'null' or a number */}

Semester Cost: {formatSemesterCost(clubDetail.semesterCost)}

{/* Display Poor Weather Plan if it's not an empty string */} {clubDetail.poorWeatherPlan && clubDetail.poorWeatherPlan.trim() !== '' && ( <>

Poor Weather Plan

{clubDetail.poorWeatherPlan}

)} {clubDetail.requirements && clubDetail.requirements.length > 0 && ( <>

Requirements

    {clubDetail.requirements.map((req, index) =>
  • {req}
  • )}
)} {clubDetail.materials && clubDetail.materials.length > 0 && ( <>

Materials Needed

    {clubDetail.materials.map((mat, index) =>
  • {mat}
  • )}
)}

Student Led: {clubDetail.isStudentLed ? 'Yes' : 'No'}

{clubDetail.studentLeaders && clubDetail.studentLeaders.length > 0 && (

Student Leaders: {clubDetail.studentLeaders.join(', ')}

)}

Staff: {clubDetail.staff.join(', ')}

Cache Status: {clubDetail.cache} (Last Checked: {new Date(clubDetail.lastCheck).toLocaleString()})

); }; export default ClubDetailModal;