Admin dashboard & round management UX overhaul
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m43s
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m43s
- Extract round detail monolith (2900→600 lines) into 13 standalone components - Add shared round/status config (round-config.ts) replacing 4 local copies - Delete 12 legacy competition-scoped pages, merge project pool into projects page - Add round-type-specific dashboard stat panels (submission, mentoring, live final, deliberation, summary) - Add contextual header quick actions based on active round type - Improve pipeline visualization: progress bars, checkmarks, chevron connectors, overflow fix - Add config tab completion dots (green/amber/red) and inline validation warnings - Enhance juries page with round assignments, member avatars, and cap mode badges - Add context-aware project list (recent submissions vs active evaluations) - Move competition settings into Manage Editions page Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -21,6 +21,7 @@ import {
|
||||
} from '@/components/ui/table'
|
||||
import { ArrowLeft, Pencil, Plus } from 'lucide-react'
|
||||
import { formatDateOnly } from '@/lib/utils'
|
||||
import { CompetitionSettings } from '@/components/admin/program/competition-settings'
|
||||
|
||||
interface ProgramDetailPageProps {
|
||||
params: Promise<{ id: string }>
|
||||
@@ -84,6 +85,24 @@ export default async function ProgramDetailPage({ params }: ProgramDetailPagePro
|
||||
</Card>
|
||||
)}
|
||||
|
||||
{(() => {
|
||||
const comp = (program as any).competitions?.[0]
|
||||
if (!comp) return null
|
||||
return (
|
||||
<CompetitionSettings
|
||||
competitionId={comp.id}
|
||||
initialSettings={{
|
||||
categoryMode: comp.categoryMode ?? 'SHARED',
|
||||
startupFinalistCount: comp.startupFinalistCount ?? 3,
|
||||
conceptFinalistCount: comp.conceptFinalistCount ?? 3,
|
||||
notifyOnRoundAdvance: comp.notifyOnRoundAdvance ?? true,
|
||||
notifyOnDeadlineApproach: comp.notifyOnDeadlineApproach ?? true,
|
||||
deadlineReminderDays: comp.deadlineReminderDays ?? [7, 3, 1],
|
||||
}}
|
||||
/>
|
||||
)
|
||||
})()}
|
||||
|
||||
<Card>
|
||||
<CardHeader className="flex flex-row items-center justify-between">
|
||||
<div>
|
||||
@@ -93,9 +112,9 @@ export default async function ProgramDetailPage({ params }: ProgramDetailPagePro
|
||||
</CardDescription>
|
||||
</div>
|
||||
<Button asChild>
|
||||
<Link href={`/admin/competitions?programId=${id}` as Route}>
|
||||
<Link href={'/admin/rounds' as Route}>
|
||||
<Plus className="mr-2 h-4 w-4" />
|
||||
Manage Competitions
|
||||
Manage Rounds
|
||||
</Link>
|
||||
</Button>
|
||||
</CardHeader>
|
||||
|
||||
Reference in New Issue
Block a user