'use client'; import { useState } from 'react'; interface EditableOutputProps { content: string; sessionId: string; tool: string; isPaid: boolean; improvementsUsed: number; maxImprovements: number; onImproved: (newContent: string) => void; } export default function EditableOutput({ content, sessionId, tool, isPaid, improvementsUsed, maxImprovements, onImproved, }: EditableOutputProps) { const [feedback, setFeedback] = useState(''); const [loading, setLoading] = useState(false); const [validating, setValidating] = useState(false); const [validation, setValidation] = useState(null); const handleImprove = async () => { if (!feedback.trim()) return; setLoading(true); try { const res = await fetch(`/api/${tool}/improve-section`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ session_id: sessionId, section: content, feedback }), }); const data = await res.json(); if (data.improved) { onImproved(data.improved); setFeedback(''); } } catch (e) { console.error('Improve failed:', e); } finally { setLoading(false); } }; const handleValidate = async () => { setValidating(true); try { const res = await fetch(`/api/${tool}/validate`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ session_id: sessionId }), }); const data = await res.json(); if (data.validation) setValidation(data.validation); } catch (e) { console.error('Validate failed:', e); } finally { setValidating(false); } }; const remaining = maxImprovements - improvementsUsed; return (
{content}
{isPaid && ( <>
{remaining} improvements remaining
{validation && (

Quality Assessment

{validation}
)} {remaining > 0 && (
setFeedback(e.target.value)} placeholder="Describe what to improve..." className="flex-1 border rounded-lg px-3 py-2 text-sm" onKeyDown={(e) => e.key === 'Enter' && handleImprove()} />
)} )}
); }