'use client'; import { useCreateTeam } from "@/hooks/team/useCreateTeam"; import { Box } from '@/ui/Box'; import { Button } from '@/ui/Button'; import { InfoBanner } from '@/ui/InfoBanner'; import { Input } from '@/ui/Input'; import { Group } from '@/ui/Group'; import { Text } from '@/ui/Text'; import { TextArea } from '@/ui/TextArea'; import React, { useState } from 'react'; interface CreateTeamFormProps { onCancel?: () => void; onSuccess?: (teamId: string) => void; onNavigate: (teamId: string) => void; } export function CreateTeamForm({ onCancel, onSuccess, onNavigate }: CreateTeamFormProps) { const createTeamMutation = useCreateTeam(); const [formData, setFormData] = useState({ name: '', tag: '', description: '', }); const [errors, setErrors] = useState>({}); 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; } createTeamMutation.mutate( { name: formData.name, tag: formData.tag.toUpperCase(), description: formData.description, }, { onSuccess: (result) => { const teamId = result.id; if (onSuccess) { onSuccess(teamId); } else { onNavigate(teamId); } }, onError: (error) => { alert(error instanceof Error ? error.message : 'Failed to create team'); }, } ); }; return ( setFormData({ ...formData, name: e.target.value })} placeholder="Enter team name..." disabled={createTeamMutation.isPending} error={errors.name} /> setFormData({ ...formData, tag: e.target.value.toUpperCase() })} placeholder="e.g., APEX" maxLength={4} disabled={createTeamMutation.isPending} error={errors.tag} />