'use client' import PageLayout from '../components/PageLayout' import Waves from '../components/waves' import { UsersIcon, ExclamationTriangleIcon, CpuChipIcon, ServerStackIcon, ArrowRightIcon, Squares2X2Icon, BanknotesIcon, ClipboardDocumentListIcon } from '@heroicons/react/24/outline' import { useMemo, useState, useEffect } from 'react' import { useRouter } from 'next/navigation' import { useAdminUsers } from '../hooks/useAdminUsers' // env-based feature flags const DISPLAY_MATRIX = process.env.NEXT_PUBLIC_DISPLAY_MATRIX !== 'false' const DISPLAY_ABONEMENTS = process.env.NEXT_PUBLIC_DISPLAY_ABONEMMENTS !== 'false' const DISPLAY_NEWS = process.env.NEXT_PUBLIC_DISPLAY_NEWS !== 'false' export default function AdminDashboardPage() { const router = useRouter() const { userStats, isAdmin } = useAdminUsers() const [isClient, setIsClient] = useState(false) // Handle client-side mounting useEffect(() => { setIsClient(true) }, []) // Fallback for loading/no data const displayStats = userStats || { totalUsers: 0, adminUsers: 0, verificationPending: 0, activeUsers: 0, personalUsers: 0, companyUsers: 0 } const permissionStats = useMemo(() => ({ permissions: 1 // TODO: fetch permission definitions }), []) const serverStats = useMemo(() => ({ status: 'Online', uptime: '4 days, 8 hours', cpu: '0%', memory: '0.1 / 7.8', recentErrors: [] as { id: string; ts: string; msg: string }[] }), []) // Show loading during SSR/initial client render if (!isClient) { return (

Loading...

) } // Access check (only after client-side hydration) if (!isAdmin) { return (

Access Denied

You need admin privileges to access this page.

) } return (
{/* Header */}

Admin Dashboard

Manage all administrative features, user management, permissions, and global settings.

{/* Warning banner */}

Warning: Settings and actions below this point can have consequences for the entire system!

Manage all administrative features, user management, permissions, and global settings.

{/* Stats Card */}
Total Users
{displayStats.totalUsers}
Admins
{displayStats.adminUsers}
Active
{displayStats.activeUsers}
Pending Verification
{displayStats.verificationPending}
Personal
{displayStats.personalUsers}
Company
{displayStats.companyUsers}
{/* Management Shortcuts Card */}

Management Shortcuts

Quick access to common admin modules.

{/* Matrix Management */} {/* Coffee Subscription Management */} {/* Contract Management (unchanged) */} {/* User Management (unchanged) */} {/* News Management */}
{/* Server Status & Logs */}

Server Status & Logs

System health, resource usage & recent error insights.

{/* Metrics */}

Server Status:{' '} {serverStats.status === 'Online' ? 'Server Online' : 'Offline'}

Uptime: {serverStats.uptime}

CPU Usage: {serverStats.cpu}

Memory Usage: {serverStats.memory} GB

Autoscaled environment (mock)
{/* Divider */}
{/* Logs */}

Recent Error Logs

{serverStats.recentErrors.length === 0 && (

No recent logs.

)} {/* Placeholder for future logs list */} {/* TODO: Replace with mapped log entries */}
) }