diff --git a/public/assets/images/personas/darren-okafor.svg b/public/assets/images/personas/darren-okafor.svg new file mode 100644 index 0000000..8c18493 --- /dev/null +++ b/public/assets/images/personas/darren-okafor.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + DO + PROTOCOLS / SPECS + diff --git a/public/assets/images/personas/elena-vasquez.svg b/public/assets/images/personas/elena-vasquez.svg new file mode 100644 index 0000000..b72d1ac --- /dev/null +++ b/public/assets/images/personas/elena-vasquez.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + EV + STREAMING / OTT + diff --git a/public/assets/images/personas/marcus-halverson.svg b/public/assets/images/personas/marcus-halverson.svg new file mode 100644 index 0000000..3111901 --- /dev/null +++ b/public/assets/images/personas/marcus-halverson.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + MH + INDUSTRY VETERAN + diff --git a/public/assets/images/personas/mike-trayton.svg b/public/assets/images/personas/mike-trayton.svg new file mode 100644 index 0000000..bb6dabf --- /dev/null +++ b/public/assets/images/personas/mike-trayton.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + MT + LIVE / SPORTS + diff --git a/public/assets/images/personas/priya-rao.svg b/public/assets/images/personas/priya-rao.svg new file mode 100644 index 0000000..08ecdf7 --- /dev/null +++ b/public/assets/images/personas/priya-rao.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + PR + POST-PRODUCTION + diff --git a/public/assets/images/personas/sarah-quinn.svg b/public/assets/images/personas/sarah-quinn.svg new file mode 100644 index 0000000..73806b2 --- /dev/null +++ b/public/assets/images/personas/sarah-quinn.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + SQ + BUSINESS / M&A + diff --git a/src/app/admin/review-queue/[id]/ReviewActions.tsx b/src/app/admin/review-queue/[id]/ReviewActions.tsx new file mode 100644 index 0000000..98fa8cf --- /dev/null +++ b/src/app/admin/review-queue/[id]/ReviewActions.tsx @@ -0,0 +1,73 @@ +"use client"; + +import { useState, useTransition } from "react"; +import { useRouter } from "next/navigation"; + +interface Props { + id: string; + currentStatus: string; +} + +export default function ReviewActions({ id, currentStatus }: Props) { + const [note, setNote] = useState(""); + const [pending, startTransition] = useTransition(); + const [err, setErr] = useState(null); + const router = useRouter(); + + async function act(action: "approve" | "reject" | "needs_human") { + setErr(null); + const res = await fetch(`/api/admin/review-queue/${id}`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ action, note }), + }); + if (!res.ok) { + const body = await res.json().catch(() => ({})); + setErr(body.error || `HTTP ${res.status}`); + return; + } + startTransition(() => { + router.refresh(); + router.push("/admin/review-queue"); + }); + } + + return ( +
+
+ Current status: {currentStatus} +
+