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 && (
Kelola Tenant
)}
{isTenantAdmin && tenant && (
Kelola Tenant User
)}
{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')}`
: ''}
Panduan Instalasi & Migrasi
)}
>
);
}
Dashboard.layout = { breadcrumbs: [{ title: 'Dashboard', href: dashboard() }] };