'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import Button from '@/components/ui/Button'; import Input from '@/components/ui/Input'; import { getCreateTeamUseCase } from '@/lib/di-container'; import { useEffectiveDriverId } from '@/lib/currentDriver'; interface CreateTeamFormProps { onCancel?: () => void; onSuccess?: (teamId: string) => void; } export default function CreateTeamForm({ onCancel, onSuccess }: CreateTeamFormProps) { const router = useRouter(); const [formData, setFormData] = useState({ name: '', tag: '', description: '', }); const [errors, setErrors] = useState>({}); const [submitting, setSubmitting] = useState(false); const currentDriverId = useEffectiveDriverId(); const validateForm = () => { const newErrors: Record = {}; if (!formData.name.trim()) { newErrors.name = 'Team name is required'; } else if (formData.name.length < 3) { newErrors.name = 'Team name must be at least 3 characters'; } if (!formData.tag.trim()) { newErrors.tag = 'Team tag is required'; } else if (formData.tag.length > 4) { newErrors.tag = 'Team tag must be 4 characters or less'; } if (!formData.description.trim()) { newErrors.description = 'Description is required'; } else if (formData.description.length < 10) { newErrors.description = 'Description must be at least 10 characters'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!validateForm()) { return; } setSubmitting(true); try { const useCase = getCreateTeamUseCase(); const result = await useCase.execute({ name: formData.name, tag: formData.tag.toUpperCase(), description: formData.description, ownerId: currentDriverId, leagues: [], }); const teamId = result.team.id; if (onSuccess) { onSuccess(teamId); } else { router.push(`/teams/${teamId}`); } } catch (error) { alert(error instanceof Error ? error.message : 'Failed to create team'); setSubmitting(false); } }; return (
setFormData({ ...formData, name: e.target.value })} placeholder="Enter team name..." disabled={submitting} /> {errors.name && (

{errors.name}

)}
setFormData({ ...formData, tag: e.target.value.toUpperCase() })} placeholder="e.g., APEX" maxLength={4} disabled={submitting} />

Max 4 characters

{errors.tag && (

{errors.tag}

)}