'use client'; import { useState } from 'react'; import { createDataset } from '@/app/actions/datasets'; import Modal from '@/components/Modal'; export default function CreateDatasetModal() { const [isOpen, setIsOpen] = useState(false); const [name, setName] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [success, setSuccess] = useState(false); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); setError(null); setSuccess(false); if (!name.trim()) { setError('Dataset name is required'); return; } setLoading(true); try { await createDataset({ name: name.trim() }); setName(''); setSuccess(true); setTimeout(() => { setSuccess(false); setIsOpen(false); // Refresh the page to show the new dataset window.location.reload(); }, 1500); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to create dataset'); } finally { setLoading(false); } } function handleClose() { if (!loading) { setIsOpen(false); setName(''); setError(null); setSuccess(false); } } return ( <> { const form = document.getElementById('datasetForm') as HTMLFormElement; form?.dispatchEvent(new Event('submit', { bubbles: true })); }, variant: 'primary', disabled: loading, }, ]} >
setName(e.target.value)} placeholder="Enter dataset name" className="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" disabled={loading} autoFocus />
{error && (
{error}
)} {success && (
Dataset created successfully!
)}
); }