import React, { useState } from "react"; import Field from "./Field"; import { generateEmail, lintText, GenerateReq } from "@/lib/api"; type Props = { onResult: (r: any) => void; }; export default function GeneratorForm({ onResult }: Props) { const [loading, setLoading] = useState(false); const [form, setForm] = useState({ language: "ja", industry: "ITサービス", target_company: "株式会社○○", target_persona: "情報システム部の部長", pain_points: "SaaS乱立によるコスト・運用負荷増大", value_prop: "運用統合と可視化によりTCOを30%削減", product_name: "Aroundabout Suite", cta: "15分のオンライン面談をご提案", tone: "フォーマルで簡潔", variables: { company: "株式会社○○", person: "山田様" }, length_hint: "中", extra_instr: "" }); const update = (k: keyof GenerateReq) => (e: React.ChangeEvent) => setForm(f => ({ ...f, [k]: e.target.value })); async function onSubmit(e: React.FormEvent) { e.preventDefault(); setLoading(true); try { const res = await generateEmail({ ...form, variables: form.variables }); // 追加の簡易Lint const lint = await lintText(res.body); onResult({ ...res, lint }); } catch (err) { onResult({ error: String(err) }); } finally { setLoading(false); } } return (