diff --git a/components/hackathons/submissions/SubmissionForm.tsx b/components/hackathons/submissions/SubmissionForm.tsx index 2b9135da3..07f830a22 100644 --- a/components/hackathons/submissions/SubmissionForm.tsx +++ b/components/hackathons/submissions/SubmissionForm.tsx @@ -404,6 +404,10 @@ const SubmissionFormContent: React.FC = ({ }; const handleAddInvitee = () => { + if (currentHackathon && invitees.length + 1 >= currentHackathon.teamMax) { + return; + } + if (!currentInviteeName || !currentInviteeRole || !currentInviteeEmail) { toast.error('Please fill in name, email and role'); return; @@ -452,6 +456,17 @@ const SubmissionFormContent: React.FC = ({ form.setError('teamName', { message: 'Team Name is required' }); return; } + if ( + currentHackathon && + invitees.length + 1 < currentHackathon.teamMin + ) { + const membersNeeded = + currentHackathon.teamMin - (invitees.length + 1); + toast.error( + `Your team needs at least ${currentHackathon.teamMin} members. Please add ${membersNeeded} more member${membersNeeded > 1 ? 's' : ''}.` + ); + return; + } isValid = true; } } else { @@ -772,9 +787,34 @@ const SubmissionFormContent: React.FC = ({ />
- - Invite Members (Optional) - +
+ + Invite Members + + {currentHackathon && ( + = currentHackathon.teamMax + ? 'border-amber-500 bg-amber-500/20 text-amber-400' + : 'border-gray-600 text-gray-400' + )} + > + {invitees.length + 1} / {currentHackathon.teamMax}{' '} + members + + )} +
+ {currentHackathon && + invitees.length + 1 < currentHackathon.teamMin && ( +

+ Minimum {currentHackathon.teamMin} members required + — add{' '} + {currentHackathon.teamMin - (invitees.length + 1)}{' '} + more to proceed. +

+ )}
= ({ setCurrentInviteeName(e.target.value) } className='border-gray-700 bg-gray-800/50 text-white' + disabled={ + !!( + currentHackathon && + invitees.length + 1 >= currentHackathon.teamMax + ) + } /> = ({ setCurrentInviteeEmail(e.target.value) } className='border-gray-700 bg-gray-800/50 text-white' + disabled={ + !!( + currentHackathon && + invitees.length + 1 >= currentHackathon.teamMax + ) + } /> = ({ setCurrentInviteeRole(e.target.value) } className='border-gray-700 bg-gray-800/50 text-white' + disabled={ + !!( + currentHackathon && + invitees.length + 1 >= currentHackathon.teamMax + ) + } />