+
+
+
+ Select Materials for This Event
+
+
+
+ {isLoadingMaterials ? (
+
+
+
Loading materials...
+
+ ) : availableMaterials.length === 0 ? (
+
+
+
+ No materials available
+
+
+ You must upload at least one material before joining an event
+
+
+
+ ) : (
+ <>
+ {/* Search Box */}
+
+
+ setSearchTerm(e.target.value)}
+ className="pl-10"
+ />
+
+
+ {/* Materials List */}
+
+ {availableMaterials
+ .filter(material =>
+ material.fileName.toLowerCase().includes(searchTerm.toLowerCase())
+ )
+ .map((material) => (
+
+
handleMaterialToggle(material.id)}
+ />
+
+
+ ))}
+
+
+ {searchTerm && availableMaterials.filter(m => m.fileName.toLowerCase().includes(searchTerm.toLowerCase())).length === 0 && (
+
+ No materials found matching "{searchTerm}"
+
+ )}
+
+ {selectedMaterials.length > 0 && (
+
+ {selectedMaterials.length} material(s) selected
+
+ )}
+ >
+ )}
+
+ {materialsMessage && !isLoadingMaterials && availableMaterials.length === 0 && (
+
+ )}
+
+ )}
+
+ {/* Join Button - Only show if speaker has accepted invitation */}
+ {eventStatus === 'PUBLISHED' && (
+
+ {isCheckingInvitation ? (
+
+ ) : !hasAcceptedInvitation ? (
+
+
+
+ You must be invited and accept the invitation to join this event.
+
+
+ ) : canJoin ? (
+
+ ) : (
+
+ )}
+
+ {/* Join Status Message */}
+ {joinMessage && (
+
+ {hasJoined ?
:
}
+ {joinMessage}
+
+ )}
+
+ {/* Material Selection Reminder */}
+ {canJoin && !hasJoined && hasAcceptedInvitation && availableMaterials.length > 0 && selectedMaterials.length === 0 && (
+
+
+ Please select at least one material to join this event
+
+ )}
+
+ {/* No Materials Warning */}
+ {canJoin && !hasJoined && hasAcceptedInvitation && availableMaterials.length === 0 && !isLoadingMaterials && (
+
+
+ You must upload at least one presentation material before joining this event
+
+ )}
+
+ )}
+
+ {/* Event Status Badge */}
+ {eventStatus !== 'PUBLISHED' && (
+