import React, { useState } from 'react'; import { Modal, TextInput, Button, Group, Box } from '@mantine/core'; import { useModalContext } from '../../../contexts/ModalContext'; import { notifications } from '@mantine/notifications'; import type { Workspace } from '@/types/models'; import { createWorkspace } from '@/api/workspace'; interface CreateWorkspaceModalProps { onWorkspaceCreated?: (workspace: Workspace) => Promise; } const CreateWorkspaceModal: React.FC = ({ onWorkspaceCreated, }) => { const [name, setName] = useState(''); const [loading, setLoading] = useState(false); const { createWorkspaceModalVisible, setCreateWorkspaceModalVisible } = useModalContext(); const handleSubmit = async (): Promise => { const trimmedName = name.trim(); if (!trimmedName) { notifications.show({ title: 'Error', message: 'Workspace name is required', color: 'red', }); return; } setLoading(true); try { const workspace = await createWorkspace(trimmedName); notifications.show({ title: 'Success', message: 'Workspace created successfully', color: 'green', }); setName(''); setCreateWorkspaceModalVisible(false); if (onWorkspaceCreated) { await onWorkspaceCreated(workspace); } } catch (_error) { notifications.show({ title: 'Error', message: 'Failed to create workspace', color: 'red', }); } finally { setLoading(false); } }; return ( setCreateWorkspaceModalVisible(false)} title="Create New Workspace" centered size="sm" > setName(event.currentTarget.value)} mb="md" w="100%" disabled={loading} /> ); }; export default CreateWorkspaceModal;