import { useState, useEffect, useCallback } from 'react'; import { Wand2, Undo2 } from 'lucide-react'; import { Button } from '../ui/button'; interface PromptInputProps { value: string; onChange: (value: string) => void; } export default function PromptInput({ value, onChange }: PromptInputProps) { const [isEnhancing, setIsEnhancing] = useState(false); const [previousPrompt, setPreviousPrompt] = useState(''); const [isEnhanced, setIsEnhanced] = useState(false); const enhancePrompt = useCallback(async () => { if (!value.trim() || isEnhancing) return; setIsEnhancing(true); setPreviousPrompt(value); try { const response = await fetch('/api/enhance-prompt', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ prompt: value }), }); if (!response.ok) { throw new Error('Failed to enhance prompt'); } const data = await response.json(); onChange(data.enhancedPrompt); setIsEnhanced(true); } catch (error) { console.error('Error enhancing prompt:', error); } finally { setIsEnhancing(false); } }, [value, onChange]); const undoEnhance = useCallback(() => { onChange(previousPrompt); setIsEnhanced(false); }, [previousPrompt, onChange]); useEffect(() => { const handleKeyDown = (event: KeyboardEvent) => { if ((event.ctrlKey || event.metaKey) && event.key === 'i') { event.preventDefault(); enhancePrompt(); } }; document.addEventListener('keydown', handleKeyDown); return () => { document.removeEventListener('keydown', handleKeyDown); }; }, [enhancePrompt]); return (
{isEnhanced && ( )}