- );
-}
diff --git a/app/(landing)/organizations/[id]/hackathons/[hackathonId]/judging/page.tsx b/app/(landing)/organizations/[id]/hackathons/[hackathonId]/judging/page.tsx
index 979585f18..ead8a7f6e 100644
--- a/app/(landing)/organizations/[id]/hackathons/[hackathonId]/judging/page.tsx
+++ b/app/(landing)/organizations/[id]/hackathons/[hackathonId]/judging/page.tsx
@@ -4,7 +4,6 @@ import { useEffect, useState, useCallback, useMemo, useRef } from 'react';
import MetricsCard from '@/components/organization/cards/MetricsCard';
import JudgingParticipant from '@/components/organization/cards/JudgingParticipant';
import EmptyState from '@/components/EmptyState';
-import Link from 'next/link';
import { useParams } from 'next/navigation';
import {
getJudgingSubmissionsForJudge,
@@ -54,10 +53,10 @@ import { reportError, reportMessage } from '@/lib/error-reporting';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
import { JudgingCriteriaList } from '@/components/organization/hackathons/judging/JudgingCriteriaList';
import JudgingResultsTable from '@/components/organization/hackathons/judging/JudgingResultsTable';
+import TrackResultsSection from '@/components/organization/hackathons/judging/TrackResultsSection';
+import AllocationPreviewCard from '@/components/organization/hackathons/judging/AllocationPreviewCard';
import CoverageMatrix from '@/components/organization/hackathons/judging/CoverageMatrix';
import { OrganizerJudgesPanel } from '@/components/organization/hackathons/judging/OrganizerJudgesPanel';
-import RecommendationThresholdsCard from '@/components/organization/hackathons/judging/RecommendationThresholdsCard';
-import AiScorecardsPanel from '@/components/organization/hackathons/judging/AiScorecardsPanel';
import {
useHackathon,
useHackathonTracks,
@@ -827,25 +826,11 @@ export default function JudgingPage() {
) : (
-
-
- )
+ ? `No submissions matching "${submissionSearchTerm}"`
+ : 'There are currently no submissions to judge.'
}
/>
)}
@@ -865,25 +850,6 @@ export default function JudgingPage() {
onRemoveJudge={userId => setJudgeToRemove(userId)}
onJudgesChanged={fetchJudges}
/>
-
- {canManageJudges && (
-
-
-
- )}
-
- {canManageJudges && (
-
-
-
- )}
{/* Legacy org-members picker โ superseded by email invitations.
Kept hidden behind a flag so we can re-surface it if a
power-user organizer asks for the direct-add path. */}
@@ -1058,40 +1024,91 @@ export default function JudgingPage() {
- {/* Winners are picked, confirmed and paid in the Winners
- section. This tab is now read-only scoring standings. */}
-
-
-
-
-
+ {resultsPublished && (
+
+
-
- {resultsPublished
- ? 'Winners are published'
- : 'Ready to pick winners?'}
+
+ Results published
- {resultsPublished
- ? 'Review and pay winners in the Winners section.'
- : 'When judging is done, pick a winner for each prize in the Winners section.'}
+ Winner rankings are live. This hackathon's results
+ have been finalized.
diff --git a/app/(landing)/organizations/[id]/hackathons/[hackathonId]/participants/page.tsx b/app/(landing)/organizations/[id]/hackathons/[hackathonId]/participants/page.tsx
index 55d8c637a..3d6c79873 100644
--- a/app/(landing)/organizations/[id]/hackathons/[hackathonId]/participants/page.tsx
+++ b/app/(landing)/organizations/[id]/hackathons/[hackathonId]/participants/page.tsx
@@ -3,7 +3,6 @@
import { useEffect, useMemo, useRef, useState, useCallback } from 'react';
import MetricsCard from '@/components/organization/cards/MetricsCard';
import { useParams } from 'next/navigation';
-import { Info } from 'lucide-react';
import { useHackathons } from '@/hooks/use-hackathons';
import { getHackathonStatistics, getHackathon } from '@/lib/api/hackathons';
import { AuthGuard } from '@/components/auth';
@@ -335,17 +334,6 @@ const ParticipantsPage: React.FC = () => {
/>
-
-
-
- Shortlist the
- entries you want judged. Only shortlisted submissions move on to
- the Judging page, where your judges score them. Use the status
- filter to find submitted entries, then shortlist or disqualify
- each one.
-
- {completeness.incompleteSubmissionCount} of{' '}
- {completeness.totalShortlisted} shortlisted submissions are
- missing scores from one or more active judges.
-