import { useActionMutation } from "@agent-native/core/client/hooks"; import { IconPlus } from "@tabler/icons-react"; import { useId, useState } from "react"; import { toast } from "sonner"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; const emptyForm = { text: "", author: "", poemTitle: "", source: "", year: "", tags: "" }; export function SubmitQuoteDialog() { const [open, setOpen] = useState(false); const [form, setForm] = useState(emptyForm); const formId = useId(); const { mutate, isPending } = useActionMutation("create-quote", { onSuccess: () => { toast.success("Quote added"); setForm(emptyForm); setOpen(false); }, onError: () => toast.error("Couldn't save that quote — try again"), }); function handleSubmit(event: React.FormEvent) { event.preventDefault(); if (!form.text.trim() || !form.author.trim() || !form.poemTitle.trim()) return; mutate({ text: form.text.trim(), author: form.author.trim(), poemTitle: form.poemTitle.trim(), source: form.source.trim() || undefined, year: form.year ? Number(form.year) : undefined, tags: form.tags .split(",") .map((t) => t.trim().toLowerCase()) .filter(Boolean), }); } return ( Submit a quote Share a line or passage from a poem you love.