"use client"; import { useEffect, useState, useCallback } from "react"; import { useRouter } from "next/navigation"; interface Feature { key: string; name: string; module?: string; } interface Package { id: string; name: string; price: string; features: string; } interface Tenant { id: string; name: string; licenseNumber: string; licenses?: string | Record; package?: { id: string; name: string; features: string; }; byokEnabled?: boolean; byokKey?: string; users?: any[]; } interface User { email: string; role: string; } export default function SupremeAdminDashboard() { const [data, setData] = useState(null); const [tenants, setTenants] = useState([]); const [packages, setPackages] = useState([]); const [systemFeatures, setSystemFeatures] = useState([]); const [loading, setLoading] = useState(true); const router = useRouter(); const handleLogout = async () => { try { await fetch('/api/auth/logout', { method: 'POST' }); window.location.href = '/'; } catch (e) { console.error("Logout failed", e); window.location.href = '/'; } }; // Modal States const [showPackageModal, setShowPackageModal] = useState(false); const [showTenantModal, setShowTenantModal] = useState(false); const [selectedTenant, setSelectedTenant] = useState(null); // Quantum Toast System const [toast, setToast] = useState<{message: string, type: 'success' | 'error'} | null>(null); const showToast = (message: string, type: 'success' | 'error' = 'success') => { setToast({ message, type }); setTimeout(() => setToast(null), 4000); }; const [tenantLicenses, setTenantLicenses] = useState>({}); const [byokEnabled, setByokEnabled] = useState(false); const [byokKey, setByokKey] = useState(""); // Form States const [editingPkgId, setEditingPkgId] = useState(null); const [newPkgName, setNewPkgName] = useState(""); const [newPkgPrice, setNewPkgPrice] = useState(""); const [selectedFeatures, setSelectedFeatures] = useState([]); const [searchQuery, setSearchQuery] = useState(""); // XCU Engine State const [xcuNodes, setXcuNodes] = useState([]); const [xcuLoading, setXcuLoading] = useState(false); // Security Tier Modal const [tierModal, setTierModal] = useState<{tenantId: string; tenantName: string; currentTier: string} | null>(null); const [tierSwitching, setTierSwitching] = useState(false); const [selectedTier, setSelectedTier] = useState('STANDARD'); const TIER_CONFIG: Record = { STANDARD: { label: "Let's Encrypt", desc: 'Sertifikat global, dipercaya semua browser. Auto-renew 90 hari.', color: 'text-emerald-400', bg: 'bg-emerald-500/10', border: 'border-emerald-500/20', icon: '🌐' }, SOVEREIGN: { label: 'Private CA (X)', desc: 'RSA-4096, 30 tahun. Offline-ready, tidak bergantung internet global.', color: 'text-cyan-400', bg: 'bg-cyan-500/10', border: 'border-cyan-500/20', icon: '🛡️' }, CLIENT_CA: { label: 'Client CA (Upload)', desc: 'Tenant upload CA mereka sendiri (BSSN/Komdigi/Militer/BIN).', color: 'text-amber-400', bg: 'bg-amber-500/10', border: 'border-amber-500/20', icon: '🏛️' }, }; const fetchXcuStatus = useCallback(async () => { setXcuLoading(true); try { const resp = await fetch('/api/superadmin/xcu-tls-switch'); const data = await resp.json(); setXcuNodes(data.nodes || []); } catch (_e) { console.error('XCU fetch failed', _e); } finally { setXcuLoading(false); } }, []); const fetchData = useCallback(async () => { try { const [pkgResp, eyeResp] = await Promise.all([ fetch("/api/superadmin/packages"), fetch("/api/superadmin/supreme-dashboard") ]); const pkgData = await pkgResp.json(); const eyeData = await eyeResp.json(); if (eyeData.error) { router.push("/"); return; } setPackages(pkgData.packages || []); setTenants(eyeData.matrix || []); setSystemFeatures(pkgData.systemFeatures || []); setData(eyeData.user || { email: "Supreme Admin", role: "superadmin" }); } catch (_e) { console.error(_e); } finally { setLoading(false); } }, [router]); useEffect(() => { fetchData(); // Live polling XCU Engine status every 5s const pollXcu = async () => { try { const resp = await fetch('/api/superadmin/xcu-tls-switch'); if (resp.ok) { const data = await resp.json(); if (data.nodes) setXcuNodes(data.nodes); } } catch {} setXcuLoading(false); }; pollXcu(); const xcuInterval = setInterval(pollXcu, 5000); return () => clearInterval(xcuInterval); }, [fetchData]); const handleSavePackage = async (e?: React.FormEvent | React.MouseEvent) => { if (e) e.preventDefault(); try { const resp = await fetch("/api/superadmin/packages", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ action: editingPkgId ? "update" : "create", id: editingPkgId, name: newPkgName, price: newPkgPrice, features: selectedFeatures }) }); if (resp.ok) { setShowPackageModal(false); setEditingPkgId(null); fetchData(); showToast(editingPkgId ? "Paket berhasil diperbarui." : "Paket berhasil dibuat."); } else { const errorData = await resp.json(); showToast(errorData.error || "Gagal menyimpan paket.", "error"); } } catch (_e) { showToast("Error menyimpan paket. Periksa koneksi Anda.", "error"); } }; const handleDeletePackage = async (id: string) => { try { const resp = await fetch("/api/superadmin/packages", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ action: "delete", id }) }); if (resp.ok) { fetchData(); showToast("Paket berhasil dihapus."); } else { const errorData = await resp.json(); showToast(errorData.error || "Gagal menghapus paket.", "error"); } } catch (_e) { showToast("Error menghapus paket. Periksa koneksi Anda.", "error"); } }; const saveTenantPackage = async (tenantId: string, packageId: string) => { try { const resp = await fetch("/api/superadmin/supreme-dashboard", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ action: "update_tenant_package", tenantId, packageId }) }); if (resp.ok) { fetchData(); showToast("Paket tenant berhasil diperbarui."); } else { const errorData = await resp.json(); showToast(errorData.error || "Gagal menetapkan paket.", "error"); } } catch (_e) { showToast("Gagal menetapkan paket. Periksa koneksi.", "error"); } }; const openTenantMatrix = (tenant: Tenant) => { setSelectedTenant(tenant); setByokEnabled(tenant.byokEnabled || false); setByokKey(tenant.byokKey || ""); let parsed: Record = {}; try { if (typeof tenant.licenses === 'string') parsed = JSON.parse(tenant.licenses); else parsed = tenant.licenses || {}; if (Array.isArray(parsed)) { const temp: Record = {}; parsed.forEach((k: string) => temp[k] = "GRANTED"); parsed = temp; } } catch(_e) {} setTenantLicenses(parsed); setShowTenantModal(true); }; const [isSavingMatrix, setIsSavingMatrix] = useState(false); const saveTenantMatrix = async () => { setIsSavingMatrix(true); try { const resp = await fetch("/api/superadmin/supreme-dashboard", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ action: "update_tenant_licenses", tenantId: selectedTenant?.id, licenses: tenantLicenses, byokEnabled, byokKey }) }); if (resp.ok) { setShowTenantModal(false); fetchData(); showToast("Matriks Sovereignty berhasil di-deploy tanpa henti (Zero Downtime)."); } else { const errorData = await resp.json(); showToast(errorData.error || "Gagal menyimpan matrix.", "error"); } } catch (_e) { showToast("Koneksi terputus. Gagal menyimpan matrix.", "error"); } finally { setIsSavingMatrix(false); } }; const applySecurityTier = async () => { if (!tierModal || selectedTier === tierModal.currentTier) return; setTierSwitching(true); try { const resp = await fetch('/api/superadmin/supreme-dashboard', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: 'update_security_tier', tenantId: tierModal.tenantId, securityTier: selectedTier }), }); if (resp.ok) { fetchData(); showToast(`Security Tier berhasil di-switch ke ${TIER_CONFIG[selectedTier]?.label || selectedTier}`); setTierModal(null); } else { showToast('Gagal mengubah Security Tier', 'error'); } } catch { showToast('Koneksi gagal', 'error'); } setTierSwitching(false); }; if (loading) return
Loading Supreme Admin...
; return (
{/* Quantum Toast Notification System */} {toast && (
{toast.type === 'success' ? ( ) : ( )}
{toast.type === 'success' ? 'System Success' : 'System Alert'}
{toast.message}
)}

Supreme Admin Workspace Control

TELEPATHY MATRIX PANOPTICON {data?.email}
Total Tenants
{tenants.length}
XCU Modules
{systemFeatures.length || '101'}
Active Packages
{packages.length}
{ setEditingPkgId(null); setNewPkgName(""); setNewPkgPrice(""); setSelectedFeatures([]); setShowPackageModal(true); }}>
Create New Package
{/* XCU QUIC ENGINE STATUS PANEL */}

XCom ULTRA Engine

QUIC/WebTransport • Port 8443 (UDP) • Port 8081 (HTTP)

LIVE
{xcuNodes.length > 0 ? xcuNodes.map((node: any, idx: number) => (
{/* Pulse indicator */}
{node.online && }
{/* Node name */}
{node.name}
{node.host}
{node.online ? ( <> {/* TLS Mode Badge */}
TLS: {node.tlsMode || 'LETSENCRYPT'}
{/* Metrics */}
CPU
{typeof node.cpu === 'number' ? node.cpu.toFixed(1) : '0'}%
RAM
{typeof node.ram === 'number' ? node.ram.toFixed(1) : '0'}%
{/* Cert hash */}
CERT: {node.certHash?.substring(0, 16)}...
{/* Status */}
● {node.status}
) : (
● OFFLINE
)}
)) : (
Loading XCU Engine status...
)}

Client Organizations (Tenants)

{tenants.map((t: Tenant) => { const isVIP = t.name.toLowerCase().includes('tsm') || t.name.toLowerCase().includes('snowy'); return (

{t.name}

{isVIP && VIP Partner} {/* Security Tier Badge */} {(() => { const tier = (t as any).securityTier || 'STANDARD'; const badgeMap: Record = { STANDARD: 'bg-emerald-50 text-emerald-600 border-emerald-200', SOVEREIGN: 'bg-cyan-50 text-cyan-700 border-cyan-200', CLIENT_CA: 'bg-amber-50 text-amber-700 border-amber-200', }; const labelMap: Record = { STANDARD: '🌐 LET\'S ENCRYPT', SOVEREIGN: '🛡️ PRIVATE CA', CLIENT_CA: '🏛️ CLIENT CA' }; return ( <> {(tier === 'SOVEREIGN' || tier === 'CLIENT_CA') && ( CA Setup → )} ); })()}
License: {t.licenseNumber || 'PENDING'}
Assigned Package
{/* Render Users List for the Tenant */} {t.users && t.users.length > 0 && (
Registered Neural Entities
{t.users.map((u: any) => (
{u.email} {u.id}
{u.role}
))}
)}
); })}

Module Packages

{packages.map((p: Package) => { let featList: string[] = []; try { featList = JSON.parse(p.features || "[]"); } catch (e) {} const isJVC = p.name.includes("JVC"); const isJC = p.name.includes("JC"); const isCombo = isJVC && isJC; const bgClass = isCombo ? "bg-gradient-to-br from-blue-800 via-teal-700 to-emerald-600 text-white border-none shadow-2xl shadow-teal-900/40 ring-1 ring-teal-400/50" : isJVC ? "bg-gradient-to-br from-indigo-950 via-blue-900 to-indigo-900 text-white border-none shadow-xl shadow-blue-900/20" : isJC ? "bg-gradient-to-br from-teal-950 via-emerald-900 to-teal-900 text-white border-none shadow-xl shadow-emerald-900/20" : "bg-white border border-gray-200 text-gray-900 shadow-sm"; const badgeClass = isCombo ? "bg-white/20 text-white border border-white/30 font-bold drop-shadow-sm" : isJVC ? "bg-blue-500/20 text-blue-100 border border-blue-400/30" : isJC ? "bg-emerald-500/20 text-emerald-100 border border-emerald-400/30" : "bg-gray-50 text-gray-700 border border-gray-200"; const textMuted = isJVC || isJC || isCombo ? "text-gray-300" : "text-gray-500"; return (
{/* Decorative background glow */} {(isJVC || isJC || isCombo) &&
} {isCombo &&
} {isCombo &&
}
{isCombo && } {p.name}
{p.price}
Core Capabilities ({featList.length} Modules)
{featList.length > 0 ? ( featList.map((f: string) => ( {f} )) ) : ( No modules defined )}
); })}
{/* CREATE PACKAGE MODAL */} {showPackageModal && (

Create XCU Module Package

setNewPkgName(e.target.value)} placeholder="Package Name" className="border p-2 rounded" required /> setNewPkgPrice(e.target.value)} placeholder="Price (Rp)" className="border p-2 rounded" required />

Select Modules

setSearchQuery(e.target.value)} className="text-xs border rounded-full px-3 py-1 outline-none" />
{['JVC', 'JC', 'XCU', 'XTM', 'IAM'].map(mod => { const filtered = systemFeatures.filter(f => (f.module === mod || (!f.module && mod === 'IAM')) && (f.name.toLowerCase().includes(searchQuery.toLowerCase()) || f.key.toLowerCase().includes(searchQuery.toLowerCase()))); if (filtered.length === 0) return null; return (
{mod} MODULES
{filtered.map(f => ( ))}
); })}
)} {/* TENANT MATRIX MODAL */} {showTenantModal && selectedTenant && (

{selectedTenant.name} {selectedTenant.package ? selectedTenant.package.name : "A LA CARTE (CUSTOM)"}

Superadmin Matrix Control & Sovereignty Panel

{/* SPECTACULAR LICENSE TIER BANNER */}
{selectedTenant.package &&
} {selectedTenant.package &&
}
Active Quantum Tier
{selectedTenant.package ? ( <> {selectedTenant.package.name} ) : ( <> Custom A La Carte )}

{selectedTenant.package ? "Modul-modul di bawah ini otomatis di-kunci (GRANTED) berdasarkan paket yang dipilih. Anda dapat menambahkan modul tambahan sebagai A La Carte." : "Tenant ini tidak terikat pada paket apapun. Semua modul diatur secara manual per-item melalui saklar di bawah ini."}

{selectedTenant.package && (
Paket Terkunci (Auto-Granted)
)}

Quantum BYOK Sovereignty

Berikan otoritas penuh kepada tenant untuk mendikte kunci enkripsi E2EE mereka sendiri.

{byokEnabled && ( setByokKey(e.target.value)} className="text-[10px] font-mono bg-white border border-blue-200 rounded-xl px-3 py-2 outline-none focus:ring-2 focus:ring-blue-500" /> )}
setSearchQuery(e.target.value)} className="border rounded-full px-4 py-2 text-sm w-64 outline-none focus:ring-2 focus:ring-blue-500" />
{['JVC', 'JC', 'XCU', 'XTM', 'IAM'].map(mod => { const filtered = systemFeatures.filter(f => (f.module === mod || (!f.module && mod === 'IAM')) && (f.name.toLowerCase().includes(searchQuery.toLowerCase()) || f.key.toLowerCase().includes(searchQuery.toLowerCase()))); if (filtered.length === 0) return null; return (
{mod} MODULES
{filtered.map(feat => { let isIncludedInPackage = false; if (selectedTenant?.package) { try { const pkgFeats = JSON.parse(selectedTenant.package.features || "[]"); if (pkgFeats.includes(feat.key)) isIncludedInPackage = true; } catch(e) {} } const val = isIncludedInPackage ? 'GRANTED' : (tenantLicenses[feat.key] || 'HIDDEN'); return (
{feat.name} {feat.key}
{isIncludedInPackage && Included in Package}
); })}
); })}
)} {/* SECURITY TIER SWITCH MODAL */} {tierModal && (
!tierSwitching && setTierModal(null)}>
e.stopPropagation()}> {/* Header */}

Security Tier Configuration

Tenant: {tierModal.tenantName}

{/* Radio Options */}
{Object.entries(TIER_CONFIG).map(([key, cfg]) => ( ))}
{/* Actions */}
)}
); }