"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { createRefundAction } from "@/features/refund/actions"; const REASON_OPTIONS = [ { value: "USER_CANCELLATION", label: "Peserta cancel sendiri" }, { value: "ORGANIZER_CANCELLED", label: "Organizer batalkan trip" }, { value: "TRIP_ISSUE", label: "Masalah saat/setelah trip" }, { value: "ADMIN_ADJUSTMENT", label: "Penyesuaian admin" }, { value: "DISPUTE_RESOLVED", label: "Hasil dispute / chargeback" }, { value: "OTHER", label: "Lain-lain" }, ]; const REPORTER_OPTIONS = [ { value: "PARTICIPANT", label: "Peserta" }, { value: "ORGANIZER", label: "Organizer" }, ]; export function CreateRefundForm() { const router = useRouter(); const [open, setOpen] = useState(false); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); async function onSubmit(e: React.FormEvent) { e.preventDefault(); setError(""); setLoading(true); const fd = new FormData(e.currentTarget); const result = await createRefundAction(fd); setLoading(false); if (result.error) { setError(result.error); return; } (e.target as HTMLFormElement).reset(); setOpen(false); router.refresh(); } if (!open) { return (
); } return (

Catat Laporan Refund Manual

Masukkan laporan yang diterima dari peserta atau organizer (via WhatsApp/email). Refund akan masuk antrian PENDING untuk di-review.

{error && (
{error}
)}