'use client' import { Plus, Trash2 } from 'lucide-react' import { useState } from 'react' import { addEventPrize, deleteEventPrize } from '@/actions/events' import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { useServerAction } from '@/hooks/use-server-action' interface Prize { id: number position: number prizeType: string badgeCode: string | null credits: number pixels: number points: number itemId: number | null description: string } interface Props { eventId: number prizes: Prize[] } export function EventPrizesManager({ eventId, prizes }: Props) { const { run, isPending } = useServerAction() const [showForm, setShowForm] = useState(false) const [form, setForm] = useState({ position: prizes.length + 1, prizeType: 'badge' as string, badgeCode: '', credits: 0, pixels: 0, points: 0, description: '', }) function handleAdd(e: React.FormEvent) { e.preventDefault() // biome-ignore lint/suspicious/noExplicitAny: explicitly chosen here, see surrounding code run(() => addEventPrize({ eventId, ...form } as any), { successMessage: 'Prize added!', onSuccess: () => { setShowForm(false) setForm({ ...form, position: form.position + 1, badgeCode: '', description: '' }) }, }) } return ( Prizes {showForm && (
setForm({ ...form, position: Number(e.target.value) })} />
setForm({ ...form, badgeCode: e.target.value })} placeholder="ACH_..." />
setForm({ ...form, credits: Number(e.target.value) })} />
setForm({ ...form, description: e.target.value })} />
)} {prizes.length === 0 && !showForm && (

No prizes configured yet.

)} {prizes.map((prize) => (
#{prize.position}
{prize.prizeType} {prize.badgeCode && {prize.badgeCode}} {prize.credits > 0 && {prize.credits} credits} {prize.pixels > 0 && {prize.pixels} pixels} {prize.points > 0 && {prize.points} points}
{prize.description && (

{prize.description}

)}
))}
) }