diff --git a/apps/hackathon/src/app/teams/[teamId]/members/page.tsx b/apps/hackathon/src/app/teams/[teamId]/members/page.tsx
index d6dcbaa..bad6582 100644
--- a/apps/hackathon/src/app/teams/[teamId]/members/page.tsx
+++ b/apps/hackathon/src/app/teams/[teamId]/members/page.tsx
@@ -47,6 +47,7 @@ const ManageMembersPage: FC = (): ReactElement => {
: [];
const currentUserId = session?.user?.id;
const isLeader = currentUserId === team?.leader_id;
+ const hasSubmission = team?.has_submission;
const form = useForm({
resolver: zodResolver(inviteMemberSchema),
@@ -133,7 +134,11 @@ const ManageMembersPage: FC = (): ReactElement => {
-
+ {/* Submission Lock Warning */}
+ {hasSubmission && (
+
+
+
🔒
+
+
+ Team Locked
+
+
+ Your team has submitted a project. You cannot add or remove members after submission to maintain competition integrity.
+
+
+
+
+ )}
+
{/* Join Requests */}
{joinRequests.length > 0 && (
@@ -196,7 +218,8 @@ const ManageMembersPage: FC = (): ReactElement => {
handleApproveRequest(request.id)}
- disabled={isResponding}
+ disabled={isResponding || hasSubmission}
+ title={hasSubmission ? 'Cannot accept members after project submission' : undefined}
>
Approve
@@ -272,7 +295,7 @@ const ManageMembersPage: FC = (): ReactElement => {
- {member.role !== 'leader' && (
+ {member.role !== 'leader' && !hasSubmission && (
{
{/* Warning */}
-
-
- Note: Members cannot leave the team without your
- approval. Only you can remove members from the team.
-
-
+ {!hasSubmission && (
+
+
+ Note: Members cannot leave the team without your
+ approval. Only you can remove members from the team.
+
+
+ )}
{/* Invite Member Modal */}