'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import Link from 'next/link' import { trpc } from '@/lib/trpc/client' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Textarea } from '@/components/ui/textarea' import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from '@/components/ui/card' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { ArrowLeft, Loader2 } from 'lucide-react' import { toast } from 'sonner' export default function NewPartnerPage() { const router = useRouter() const [isSubmitting, setIsSubmitting] = useState(false) const [partnerType, setPartnerType] = useState('PARTNER') const [visibility, setVisibility] = useState('ADMIN_ONLY') const utils = trpc.useUtils() const createPartner = trpc.partner.create.useMutation({ onSuccess: () => { utils.partner.list.invalidate() toast.success('Partner created successfully') router.push('/admin/partners') }, onError: (error) => { toast.error(error.message || 'Failed to create partner') setIsSubmitting(false) }, }) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setIsSubmitting(true) const formData = new FormData(e.currentTarget) const name = formData.get('name') as string const description = formData.get('description') as string const website = formData.get('website') as string createPartner.mutate({ name, programId: null, description: description || undefined, website: website || undefined, partnerType: partnerType as 'SPONSOR' | 'PARTNER' | 'SUPPORTER' | 'MEDIA' | 'OTHER', visibility: visibility as 'ADMIN_ONLY' | 'JURY_VISIBLE' | 'PUBLIC', }) } return (

Add Partner

Add a new partner or sponsor organization

Partner Details Basic information about the partner organization