'use client'; import { useEffect, useState } from 'react'; import { useSuperAdmin } from '@/app/_lib/super-admin-context'; import { useRouter } from 'next/navigation'; import Link from 'next/link'; export default function AdminOrgsPage() { const { admin, loading } = useSuperAdmin(); const router = useRouter(); const [orgs, setOrgs] = useState([]); const [showAdd, setShowAdd] = useState(false); const [form, setForm] = useState({ slug: '', name: '' }); const [saving, setSaving] = useState(false); const [error, setError] = useState(''); async function load() { const res = await fetch('/api/admin/orgs'); if (res.ok) setOrgs(await res.json()); } useEffect(() => { if (loading) return; if (!admin) { router.replace('/admin/login'); return; } void load(); }, [admin, loading, router]); async function handleAdd(e: React.FormEvent) { e.preventDefault(); setError(''); setSaving(true); try { const res = await fetch('/api/admin/orgs', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(form), }); if (!res.ok) { const err = await res.json().catch(() => ({})); throw new Error(err.message ?? 'Failed'); } setShowAdd(false); setForm({ slug: '', name: '' }); void load(); } catch (err) { setError(err instanceof Error ? err.message : 'Error'); } finally { setSaving(false); } } if (loading) return

Loading...

; if (!admin) return null; return (

Organizations

{showAdd && (
void handleAdd(e)} className="bg-white rounded-xl border p-5 mb-6 flex flex-col gap-4">

New Organization

setForm({ ...form, name: e.target.value })} className="w-full border rounded-lg px-3 py-2 text-sm" placeholder="UP Parivaar" required />
setForm({ ...form, slug: e.target.value })} className="w-full border rounded-lg px-3 py-2 text-sm" placeholder="org_up_parivaar" required />
{error &&

{error}

}
)}
{orgs.map((org: any) => ( ))}
Name Slug Chapters Org Admins
{org.name} {org.slug} {org._count?.tenants ?? 0} {org._count?.orgAdmins ?? 0}
{orgs.length === 0 &&

No organizations yet.

}
); }