import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' import { useGroupData } from '@/hooks/useGroupData' import { useServerData } from '@/hooks/useServerData' import { GroupFormData, Server } from '@/types' import { ToggleGroup } from './ui/ToggleGroup' interface AddGroupFormProps { onAdd: () => void onCancel: () => void } const AddGroupForm = ({ onAdd, onCancel }: AddGroupFormProps) => { const { t } = useTranslation() const { createGroup } = useGroupData() const { servers } = useServerData() const [availableServers, setAvailableServers] = useState([]) const [error, setError] = useState(null) const [isSubmitting, setIsSubmitting] = useState(false) const [formData, setFormData] = useState({ name: '', description: '', servers: [] }) useEffect(() => { // Filter available servers (enabled only) setAvailableServers(servers.filter(server => server.enabled !== false)) }, [servers]) const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target setFormData(prev => ({ ...prev, [name]: value })) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setIsSubmitting(true) setError(null) try { if (!formData.name.trim()) { setError(t('groups.nameRequired')) setIsSubmitting(false) return } const result = await createGroup(formData.name, formData.description, formData.servers) if (!result) { setError(t('groups.createError')) setIsSubmitting(false) return } onAdd() } catch (err) { setError(err instanceof Error ? err.message : String(err)) setIsSubmitting(false) } } return (

{t('groups.addNew')}

{error && (
{error}
)}
({ value: server.name, label: server.name }))} onChange={(servers) => setFormData(prev => ({ ...prev, servers }))} />
) } export default AddGroupForm