diff --git a/client/src/components/admin/ProgramJudgingSection.tsx b/client/src/components/admin/ProgramJudgingSection.tsx index cfbc4af..607b683 100644 --- a/client/src/components/admin/ProgramJudgingSection.tsx +++ b/client/src/components/admin/ProgramJudgingSection.tsx @@ -1,5 +1,5 @@ import { Fragment, useCallback, useEffect, useMemo, useState } from "react"; -import { Loader2, ExternalLink, Lock, Trophy, Plus, ChevronRight, ChevronDown } from "lucide-react"; +import { Loader2, ExternalLink, Lock, Trophy, Plus, ChevronRight, ChevronDown, Play } from "lucide-react"; import { api, type AdminAuthArg, @@ -11,6 +11,7 @@ import { import { prizeTiersFor } from "@/lib/constants"; import { useToast } from "@/hooks/use-toast"; import { cn } from "@/lib/utils"; +import { ProjectReviewModal } from "@/components/admin/ProjectReviewModal"; type Draft = { requirements: number; techStack: number; innovation: number; notes: string }; type Tab = "score" | "results"; @@ -61,6 +62,8 @@ export function ProgramJudgingSection({ }) { const { toast } = useToast(); const [tab, setTab] = useState("score"); + // The demo currently previewed in the in-app review modal (null = closed). + const [review, setReview] = useState<{ url: string; title: string } | null>(null); const [view, setView] = useState(null); const [board, setBoard] = useState(null); const [drafts, setDrafts] = useState>({}); @@ -202,7 +205,7 @@ export function ProgramJudgingSection({ try { const auth = await getAuth(); await api.submitBallot(programSlug, auth); - toast({ title: "Scores submitted", description: "Your ballot is locked." }); + toast({ title: "Scores submitted", description: "Your scores now count. You can still revise and re-save them." }); await loadSubmissions(); } catch (e) { toast({ @@ -336,9 +339,13 @@ export function ProgramJudgingSection({ {!s.eligible && ( ·NOT IN LUMA )} - - VIDEO - + GITHUB @@ -357,7 +364,6 @@ export function ProgramJudgingSection({ type="number" min={0} max={BOUNDS[field]} - disabled={locked} value={d[field]} onChange={(e) => setField(s.id, field, e.target.value)} className="w-full font-mono text-[13px] bg-panel-deep border border-hairline text-display px-2 py-1.5 focus:outline-none focus:border-display disabled:opacity-50" @@ -368,7 +374,6 @@ export function ProgramJudgingSection({