diff --git a/apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx b/apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx
index b1254a8a..3d7a4918 100644
--- a/apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx
+++ b/apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx
@@ -187,6 +187,7 @@ function TournamentCreateClient({ tournamentId }: TournamentCreateClientProps) {
participants={participants}
inviteCode={pending?.inviteCode ?? ''}
inviteExpiresAt={pending?.inviteExpiresAt ?? ''}
+ ownerStarted={ownerStarted}
{...(isCollaborative && !ownerStarted && !isDepositClosed && { depositDeadline })}
/>
diff --git a/apps/web/src/app/tournament/[id]/create/_components/participant-panel/ParticipantPanel.tsx b/apps/web/src/app/tournament/[id]/create/_components/participant-panel/ParticipantPanel.tsx
index 472aba71..cada3d2d 100644
--- a/apps/web/src/app/tournament/[id]/create/_components/participant-panel/ParticipantPanel.tsx
+++ b/apps/web/src/app/tournament/[id]/create/_components/participant-panel/ParticipantPanel.tsx
@@ -34,6 +34,8 @@ type ParticipantPanelProps = {
inviteExpiresAt?: string;
/** 담기 마감 시각 — 있을 때만 타이머 노출 */
depositDeadline?: string;
+ /** 주최자가 토너먼트를 시작했는지 — 시작 후에는 새 참여자를 받을 수 없다 */
+ ownerStarted?: boolean;
};
const PLACEHOLDER_AVATAR_COUNT = 2;
@@ -43,6 +45,7 @@ function ParticipantPanel({
inviteCode,
inviteExpiresAt,
depositDeadline,
+ ownerStarted = false,
}: ParticipantPanelProps) {
const { id: tournamentId } = useParams<{ id: string }>();
const { refetchTournament } = useGetTournament(Number(tournamentId));
@@ -104,14 +107,17 @@ function ParticipantPanel({
{participants.map(({ user, itemCount }) => (
))}
-
+ {/* 시작 후에는 새 참여자를 받을 수 없어 초대 진입점을 숨긴다 */}
+ {!ownerStarted && (
+
+ )}
)}
@@ -144,8 +150,9 @@ function ParticipantPanel({
)}
+ {/* 시트를 열어둔 사이 주최자가 시작하면 초대가 무의미해지므로 함께 닫는다 */}