'use client' import { useState } from 'react' import { MetricsInput } from '@/lib/types' interface MetricsFormProps { onSubmit: (metrics: MetricsInput) => void initialValues?: MetricsInput } export const defaultMetrics: MetricsInput = { deploymentFrequency: 'weekly', leadTimeDays: 0, changeFailureRate: 0, mttrHours: 0, pipelineDurationMinutes: 0, prReviewTimeHours: 0, engineerCount: 1, serviceCount: 1, } export default function MetricsForm({ onSubmit, initialValues }: MetricsFormProps) { const [metrics, setMetrics] = useState(initialValues ?? defaultMetrics) function handleSubmit(e: React.FormEvent) { e.preventDefault() onSubmit(metrics) } function setField(key: K, value: MetricsInput[K]) { setMetrics((prev) => ({ ...prev, [key]: value })) } return (
setField('leadTimeDays', parseFloat(e.target.value) || 0)} className="w-full rounded-md border border-gray-300 px-3 py-2 text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500" />
setField('changeFailureRate', parseFloat(e.target.value) || 0)} className="w-full rounded-md border border-gray-300 px-3 py-2 text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500" />
setField('mttrHours', parseFloat(e.target.value) || 0)} className="w-full rounded-md border border-gray-300 px-3 py-2 text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500" />
setField('pipelineDurationMinutes', parseFloat(e.target.value) || 0)} className="w-full rounded-md border border-gray-300 px-3 py-2 text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500" />
setField('prReviewTimeHours', parseFloat(e.target.value) || 0)} className="w-full rounded-md border border-gray-300 px-3 py-2 text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500" />
setField('engineerCount', parseInt(e.target.value) || 1)} className="w-full rounded-md border border-gray-300 px-3 py-2 text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500" />
setField('serviceCount', parseInt(e.target.value) || 1)} className="w-full rounded-md border border-gray-300 px-3 py-2 text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500" />
) }