'use client'; import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { MessageSquare, X, Send, Loader2 } from 'lucide-react'; import { cn } from '../utils/cn'; export interface FeedbackWidgetProps { apiEndpoint?: string; onSuccess?: (message: string) => void; onError?: (error: any) => void; title?: string; description?: string; className?: string; } export function FeedbackWidget({ apiEndpoint = '/api/feedback', onSuccess, onError, title = 'Share Feedback', description = 'What features would you like to see? Found a bug? Let us know!', className, }: FeedbackWidgetProps) { const [isOpen, setIsOpen] = useState(false); const [message, setMessage] = useState(''); const [status, setStatus] = useState<'idle' | 'loading'>('idle'); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!message.trim()) return; setStatus('loading'); try { const res = await fetch(apiEndpoint, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ message }), }); if (!res.ok) throw new Error('Failed to send feedback'); onSuccess?.(message); setMessage(''); setIsOpen(false); } catch (err) { onError?.(err); } finally { setStatus('idle'); } }; return (
{isOpen && (

{title}

{description}