"use client"; import { useRef, useState, useTransition } from "react"; import { Loader2, Send, UploadCloud } from "lucide-react"; import { toast } from "sonner"; import { createAnnouncement } from "@/actions/announcements"; import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Textarea } from "@/components/ui/textarea"; import { MarkdownContent } from "@/components/markdown-content"; export function NewsForm() { const formRef = useRef(null); const [isPending, startTransition] = useTransition(); const [sendEmail, setSendEmail] = useState(false); const [content, setContent] = useState(""); function handleSubmit(formData: FormData) { startTransition(async () => { if (sendEmail) { formData.set("sendEmail", "on"); } try { const result = await createAnnouncement(formData); if (result.error) { toast.error(result.error); return; } if (result.warning) { toast.warning(result.warning); } else { toast.success( sendEmail ? "Ankündigung veröffentlicht. E-Mails sind zum Versand vorgemerkt." : "Ankündigung veröffentlicht.", ); } formRef.current?.reset(); setContent(""); setSendEmail(false); } catch { toast.error( "Ankündigung konnte nicht veröffentlicht werden. Bitte versuche es erneut.", ); } }); } return (