"use client"; import { useState, useRef, useEffect } from "react"; import { useRouter } from "next/navigation"; const LOCKED = new Set([ "registered", "name_approved", "name_reserved", "resignation_sent", "appointment_accepted", "cancelled", "Moved to step 2", ]); const ACTIONS = [ { label: "Name Reservation only", status: "Name reservation only in Progress", variant: "blue" }, { label: "Apply for name reservation", status: "Name reservation in Progress", variant: "blue" }, { label: "Name Already Approved", status: "Awaiting Client Approval", variant: "green" }, { label: "K-number", status: "K-number registration", variant: "purple" }, ]; export default function ActionsDropdown({ id, name, status }: { id: string; name: string; status: string }) { const router = useRouter(); const [open, setOpen] = useState(false); const [loading, setLoading] = useState(null); const ref = useRef(null); // Close on outside click useEffect(() => { if (!open) return; function handler(e: MouseEvent) { if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false); } document.addEventListener("mousedown", handler); return () => document.removeEventListener("mousedown", handler); }, [open]); if (LOCKED.has(status)) { return —; } async function doAction(status: string) { if (!confirm(`Set status to "${status}"?`)) return; setLoading(status); await fetch("/api/register/update-status", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ id, status }), }); setLoading(null); setOpen(false); router.refresh(); } return (
{open && (

{name}

{status}

{ACTIONS.map((a) => ( ))}
)}
); }