"use client"; import { useState } from "react"; import { MessageSquare, ArrowRight } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, } from "@/components/ui/dialog"; import { Textarea } from "@/components/ui/textarea"; interface FeedbackModalProps { isOpen: boolean; onClose: () => void; } export function FeedbackModal({ isOpen, onClose }: FeedbackModalProps) { const [message, setMessage] = useState(""); const [status, setStatus] = useState<"idle" | "loading" | "success" | "error">("idle"); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!message.trim()) return; setStatus("loading"); try { const res = await fetch("/api/feedback", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ message: message.trim() }), }); if (!res.ok) throw new Error(); setStatus("success"); setMessage(""); } catch { setStatus("error"); } }; const handleClose = () => { setMessage(""); setStatus("idle"); onClose(); }; return (
Share your feedback What do you think? Any bugs, ideas, or feature requests are welcome.
{status === "success" ? (

Thanks for your feedback!

We really appreciate it.

) : (