'use client'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import Link from 'next/link'; import { useOrgAdmin } from '@/app/_lib/org-admin-context'; export default function OrgTenantsPage() { const { orgAdmin, loading } = useOrgAdmin(); const router = useRouter(); const [tenants, setTenants] = useState([]); const [showAdd, setShowAdd] = useState(false); const [form, setForm] = useState({ name: '', slug: '' }); const [saving, setSaving] = useState(false); const [error, setError] = useState(''); async function load() { const res = await fetch('/api/org/tenants'); if (res.ok) setTenants(await res.json()); } useEffect(() => { if (loading) return; if (!orgAdmin) { router.replace('/org/login'); return; } void load(); }, [orgAdmin, loading, router]); async function handleAdd(e: React.FormEvent) { e.preventDefault(); setError(''); setSaving(true); try { const res = await fetch('/api/org/tenants', { 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 to create chapter'); } setShowAdd(false); setForm({ name: '', slug: '' }); void load(); } catch (err) { setError(err instanceof Error ? err.message : 'Error'); } finally { setSaving(false); } } if (loading || !orgAdmin) return

Loading...

; return (

Chapters

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

New Chapter

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

{error}

}
)}
{tenants.map((t: any) => ( ))}
Name Slug Messages Members Status
{t.name} {t.slug} {t._count?.messages ?? '—'} {t._count?.towerUsers ?? '—'} {t.isActive ? 'Active' : 'Inactive'}
{tenants.length === 0 &&

No chapters yet.

}
); }