import React, { useState } from 'react' interface ContractCreateModalProps { isOpen: boolean onClose: () => void onCreated: () => void } interface CreateContractForm { name: string description: string contractType: string redTeamEnabled: boolean redTeamPrompt: string } export function ContractCreateModal({ isOpen, onClose, onCreated }: ContractCreateModalProps) { const [form, setForm] = useState({ name: '', description: '', contractType: 'simple', redTeamEnabled: false, redTeamPrompt: '', }) const [loading, setLoading] = useState(false) const [error, setError] = useState(null) if (!isOpen) return null const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) setError(null) try { const response = await fetch('/api/v1/contracts', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ name: form.name, description: form.description || undefined, contract_type: form.contractType, red_team_enabled: form.redTeamEnabled, red_team_prompt: form.redTeamEnabled && form.redTeamPrompt ? form.redTeamPrompt : undefined, }), }) if (!response.ok) { const errorData = await response.json().catch(() => ({})) throw new Error(errorData.message || `Failed to create contract: ${response.statusText}`) } // Reset form and close modal setForm({ name: '', description: '', contractType: 'simple', redTeamEnabled: false, redTeamPrompt: '', }) onCreated() onClose() } catch (err) { setError(err instanceof Error ? err.message : 'Unknown error') } finally { setLoading(false) } } return (
e.stopPropagation()}>

Create Contract

{error && (
{error}
)}

Contract Details