'use client'; import { useState } from 'react'; import type { Role } from '@/lib/types'; import { createUserAction } from '@/lib/actions/membership'; interface CreateUserModalProps { roles: Role[]; onClose: () => void; } export function CreateUserModal({ roles, onClose }: CreateUserModalProps) { const [formData, setFormData] = useState({ username: '', password: '', role: '' }); const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(null); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsSubmitting(true); setError(null); const formDataObj = new FormData(); formDataObj.append('username', formData.username); formDataObj.append('password', formData.password); formDataObj.append('role', formData.role); try { const result = await createUserAction(formDataObj); if (result.success) { onClose(); window.location.reload(); } else { setError(result.message); } } catch (err) { setError(err instanceof Error ? err.message : 'An error occurred'); } finally { setIsSubmitting(false); } }; return (

Create New User

{error && (
{error}
)}
setFormData((prev) => ({ ...prev, username: e.target.value }))} required disabled={isSubmitting} className="mt-1 block w-full rounded-md border border-gray-600 bg-gray-700 px-3 py-2 text-white focus:border-blue-500 focus:ring-1 focus:ring-blue-500 focus:outline-none disabled:opacity-50" />
setFormData((prev) => ({ ...prev, password: e.target.value }))} required disabled={isSubmitting} className="mt-1 block w-full rounded-md border border-gray-600 bg-gray-700 px-3 py-2 text-white focus:border-blue-500 focus:ring-1 focus:ring-blue-500 focus:outline-none disabled:opacity-50" />
); }