import { Head, Link, usePage } from '@inertiajs/react'; import { Building2, CheckCircle2, KeyRound, Network, Server, ShieldCheck, UserCheck, Users, } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { dashboard } from '@/routes'; type Props = { role: 'MASTER ADMIN' | 'TENANT ADMIN' | 'TENANT USER'; tenant: { id: number; name: string; slug: string; is_active: boolean; } | null; installation?: { deployment_type: 'managed_cloud' | 'self_hosted'; domain: string | null; status: string; activated_at: string | null; } | null; license?: { plan: string; status: string; max_devices: number; max_users: number; expires_at: string | null; } | null; stats: Record; }; const roleLabels = { 'MASTER ADMIN': 'Master Admin Platform', 'TENANT ADMIN': 'Tenant Admin', 'TENANT USER': 'Tenant User', }; export default function Dashboard({ role, tenant, installation, license, stats, }: Props) { const { auth } = usePage().props; const isMaster = role === 'MASTER ADMIN'; const isTenantAdmin = role === 'TENANT ADMIN'; const cards = isMaster ? [ { label: 'Total Tenant', value: stats.tenants, icon: Building2 }, { label: 'Tenant Aktif', value: stats.activeTenants, icon: ShieldCheck, }, { label: 'User Tenant', value: stats.users, icon: Users }, { label: 'Lisensi Aktif', value: stats.activeLicenses, icon: KeyRound, }, { label: 'Instalasi Terdaftar', value: stats.installations, icon: Server, }, ] : [ { label: 'Total User', value: stats.users, icon: Users }, { label: 'User Aktif', value: stats.activeUsers, icon: UserCheck, }, { label: 'Total Perangkat', value: stats.devices, icon: Network }, { label: 'Status Tenant', value: tenant?.is_active ? 'Aktif' : 'Nonaktif', icon: CheckCircle2, }, ]; return ( <>

RADIQ NDM · {roleLabels[role]}

Selamat datang, {auth.user.name}

{isMaster ? 'Pantau tenant, instalasi, dan lisensi platform.' : `${tenant?.name ?? 'Tenant'} · ruang kerja pengelolaan perangkat jaringan.`}

{isMaster && ( )} {isTenantAdmin && tenant && ( )}
{cards.map((card) => ( {card.label}
{String(card.value)}
))}
{isMaster ? 'Kontrol Platform' : isTenantAdmin ? 'Pengelolaan Tenant' : 'Akses Perangkat'} {isMaster && 'Master Admin memiliki kendali tenant dan fondasi lisensi. Aktivasi serta perpanjangan lisensi akan tersedia pada tahap lisensi berikutnya.'} {isTenantAdmin && 'Anda adalah akun utama tenant. Anda dapat mengelola Tenant User dan nantinya menetapkan aturan penggunaan perangkat untuk mereka.'} {role === 'TENANT USER' && (stats.canAddDevice ? 'Anda diizinkan menambahkan dan mengelola perangkat sesuai kebijakan Tenant Admin. Modul perangkat akan tersedia pada tahap berikutnya.' : 'Akses perangkat Anda mengikuti kebijakan yang ditetapkan oleh Tenant Admin.')} {!isMaster && installation && ( Deployment Tenant

{installation.deployment_type === 'managed_cloud' ? 'Cloud RADIQ' : 'Self-hosted / Local'}

Status: {installation.status} {installation.domain ? ` · ${installation.domain}` : ''}

Paket: {license?.plan ?? 'belum ada'} · Lisensi {license?.status ?? 'belum aktif'} {license?.expires_at && license.plan !== 'cloud_free' ? ` · sampai ${new Date(license.expires_at).toLocaleDateString('id-ID')}` : ''}

)}
); } Dashboard.layout = { breadcrumbs: [{ title: 'Dashboard', href: dashboard() }] };