"use client"; import { useEffect, useRef } from "react"; import { X } from "lucide-react"; import { cn } from "@/shared/lib/utils"; import type { SubjectTemplate } from "../services/subject-template-service"; interface SubjectTemplateInputProps { template: SubjectTemplate; fieldValues: Record; onFieldChange: (fieldId: string, value: string) => void; onClear: () => void; } export function SubjectTemplateInput({ template, fieldValues, onFieldChange, onClear, }: SubjectTemplateInputProps) { const firstFieldRef = useRef(null); // Auto-focus first field on mount useEffect(() => { const timer = setTimeout(() => firstFieldRef.current?.focus(), 50); return () => clearTimeout(timer); }, []); let fieldRendered = 0; return (
{template.tokens.map((token, i) => { if (token.type === "static") { return ( {token.value} ); } const field = token.field!; const isFirst = fieldRendered === 0; fieldRendered++; return ( onFieldChange(field.id, e.target.value)} placeholder={field.placeholder} className={cn( "border-b-2 border-dashed border-primary/40 bg-transparent", "text-sm font-medium text-foreground", "px-1 py-0 outline-none", "focus:border-primary focus:border-solid", "placeholder:text-muted-foreground/50 placeholder:italic placeholder:text-xs", field.width, )} /> ); })}
); }