"use client"; import { useState } from "react"; export function ImportPanel() { const [text, setText] = useState(""); const [res, setRes] = useState(null); const [busy, setBusy] = useState(false); const [partial, setPartial] = useState(false); const [publish, setPublish] = useState(false); async function run() { setBusy(true); setRes(null); const csrf = document.querySelector('meta[name="csrf-token"]')?.content ?? ""; const r = await fetch(`/api/admin/import?partial=${partial ? 1 : 0}&publish=${publish ? 1 : 0}`, { method: "POST", headers: { "content-type": text.trimStart().startsWith("[") || text.trimStart().startsWith("{") ? "application/json" : "text/csv", "x-csrf-token": csrf }, body: text }); setRes({ status: r.status, ...(await r.json()) }); setBusy(false); } return (

Import

{ const f = e.target.files?.[0]; if (f) setText(await f.text()); }} className="mt-3 block text-sm" />