'use client'
import { Suspense, use } from 'react'
import Link from 'next/link'
import { useRouter } from 'next/navigation'
import { trpc } from '@/lib/trpc/client'
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from '@/components/ui/card'
import { Button } from '@/components/ui/button'
import { Badge } from '@/components/ui/badge'
import { Skeleton } from '@/components/ui/skeleton'
import { Progress } from '@/components/ui/progress'
import { Separator } from '@/components/ui/separator'
import {
ArrowLeft,
Edit,
Users,
FileText,
Calendar,
CheckCircle2,
Clock,
AlertCircle,
Archive,
Play,
Pause,
BarChart3,
Upload,
Filter,
} from 'lucide-react'
import { format, formatDistanceToNow, isPast, isFuture } from 'date-fns'
interface PageProps {
params: Promise<{ id: string }>
}
function RoundDetailContent({ roundId }: { roundId: string }) {
const router = useRouter()
const { data: round, isLoading } = trpc.round.get.useQuery({ id: roundId })
const { data: progress } = trpc.round.getProgress.useQuery({ id: roundId })
const utils = trpc.useUtils()
const updateStatus = trpc.round.updateStatus.useMutation({
onSuccess: () => {
utils.round.get.invalidate({ id: roundId })
},
})
if (isLoading) {
return Round Not Found
per project
{progress?.completedAssignments || 0} of {progress?.totalAssignments || 0}
{count}
{status.toLowerCase().replace('_', ' ')}
Start Date
{round.votingStartAt ? ({format(new Date(round.votingStartAt), 'PPP')}
{format(new Date(round.votingStartAt), 'p')}
Not set
)}End Date
{round.votingEndAt ? ({format(new Date(round.votingEndAt), 'PPP')}
{format(new Date(round.votingEndAt), 'p')}
{isFuture(new Date(round.votingEndAt)) && (Ends {formatDistanceToNow(new Date(round.votingEndAt), { addSuffix: true })}
)}Not set
)}