"use client" import type React from "react" import { useState } from "react" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Checkbox } from "@/components/ui/checkbox" import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" import type { SystemInfo } from "@/components/ai-evaluation-dashboard" interface SystemInfoFormProps { onSubmit: (data: SystemInfo) => void initialData: SystemInfo | null } const SYSTEM_TYPES = [ "Text-to-Text (e.g., chatbots, language models)", "Text-to-Image (e.g., image generation)", "Image-to-Text (e.g., image captioning, OCR)", "Image-to-Image (e.g., image editing, style transfer)", "Audio/Speech (e.g., speech recognition, text-to-speech)", "Video (e.g., video generation, analysis)", "Multimodal", "Robotic/Embodied AI", "Other", ] const DEPLOYMENT_CONTEXTS = [ "Research/Academic", "Internal/Enterprise Use", "Public/Consumer-Facing", "High-Risk Applications", "Other", ] export function SystemInfoForm({ onSubmit, initialData }: SystemInfoFormProps) { const [formData, setFormData] = useState({ name: initialData?.name || "", url: initialData?.url || "", provider: initialData?.provider || "", systemTypes: initialData?.systemTypes || [], deploymentContexts: initialData?.deploymentContexts || [], modality: initialData?.modality || "text", modelTag: (initialData as any)?.modelTag || "", knowledgeCutoff: (initialData as any)?.knowledgeCutoff || "", modelType: (initialData as any)?.modelType || "na", inputModalities: (initialData as any)?.inputModalities || [], outputModalities: (initialData as any)?.outputModalities || [], }) const handleSubmit = (e: React.FormEvent) => { e.preventDefault() onSubmit(formData) } const handleSystemTypeChange = (type: string, checked: boolean) => { setFormData((prev: SystemInfo) => ({ ...prev, systemTypes: checked ? [...prev.systemTypes, type] : prev.systemTypes.filter((t) => t !== type), })) } const handleDeploymentContextChange = (context: string, checked: boolean) => { setFormData((prev: SystemInfo) => ({ ...prev, deploymentContexts: checked ? [...prev.deploymentContexts, context] : prev.deploymentContexts.filter((c) => c !== context), })) } return ( System Information Provide basic information about the AI system you want to evaluate
setFormData((prev) => ({ ...prev, name: e.target.value }))} placeholder="e.g., GPT-4, Claude, Custom Model" required />
setFormData((prev) => ({ ...prev, url: e.target.value }))} placeholder="https://example.com" />
setFormData((prev) => ({ ...prev, modelTag: e.target.value }))} placeholder="e.g., gpt-4-1-2025-04-14" />
setFormData((prev) => ({ ...prev, knowledgeCutoff: e.target.value }))} placeholder="YYYY-MM-DD" />
setFormData((prev) => ({ ...prev, provider: e.target.value }))} placeholder="e.g., OpenAI, Anthropic, Internal Team" required />
setFormData((prev) => ({ ...prev, modelType: val as any }))}>
{['Text','Image','Audio','Video','Tabular','Robotics/Action','Other'].map((m) => (
setFormData((prev) => ({ ...prev, inputModalities: checked ? [...(prev.inputModalities || []), m] : (prev.inputModalities || []).filter((x) => x !== m), })) } />
))}
{['Text','Image','Audio','Video','Tabular','Robotics/Action','Other'].map((m) => (
setFormData((prev) => ({ ...prev, outputModalities: checked ? [...(prev.outputModalities || []), m] : (prev.outputModalities || []).filter((x) => x !== m), })) } />
))}
{DEPLOYMENT_CONTEXTS.map((context) => (
handleDeploymentContextChange(context, checked as boolean)} />
))}
) }