import { useState } from 'react' import { useForm } from 'react-hook-form' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Textarea } from '@/components/ui/textarea' import { Trash2, Plus } from 'lucide-react' interface LevelRow { value: string label: string numericValue: string colorHex: string } interface Props { onSubmit: (data: Record) => void loading?: boolean } const DEFAULT_LEVELS: LevelRow[] = [ { value: 'A', label: 'Excellent', numericValue: '4', colorHex: '#22c55e' }, { value: 'B', label: 'Good', numericValue: '3', colorHex: '#84cc16' }, { value: 'C', label: 'Developing', numericValue: '2', colorHex: '#eab308' }, { value: 'D', label: 'Beginning', numericValue: '1', colorHex: '#f97316' }, ] export function GradingScaleForm({ onSubmit, loading }: Props) { const { register, handleSubmit } = useForm({ defaultValues: { name: '', description: '', isDefault: false }, }) const [levels, setLevels] = useState(DEFAULT_LEVELS) function addLevel() { setLevels((prev) => [...prev, { value: '', label: '', numericValue: String(prev.length + 1), colorHex: '' }]) } function removeLevel(idx: number) { setLevels((prev) => prev.filter((_, i) => i !== idx)) } function updateLevel(idx: number, field: keyof LevelRow, value: string) { setLevels((prev) => prev.map((l, i) => (i === idx ? { ...l, [field]: value } : l))) } function handleFormSubmit(data: { name: string; description: string; isDefault: boolean }) { onSubmit({ name: data.name, description: data.description || undefined, isDefault: data.isDefault, levels: levels.map((l, i) => ({ value: l.value, label: l.label, numericValue: Number(l.numericValue) || i + 1, colorHex: l.colorHex || undefined, sortOrder: i, })), }) } return (