'use client' import PageLayout from '../components/PageLayout' import Waves from '../components/background/waves' import BlueBlurryBackground from '../components/background/blueblurry' // NEW import { UsersIcon, ExclamationTriangleIcon, CpuChipIcon, ServerStackIcon, ArrowRightIcon, Squares2X2Icon, BanknotesIcon, ClipboardDocumentListIcon, CommandLineIcon, LanguageIcon } from '@heroicons/react/24/outline' import { useMemo, useState, useEffect } from 'react' import { useRouter } from 'next/navigation' import { useAdminUsers } from '../hooks/useAdminUsers' import useAuthStore from '../store/authStore' import { useTranslation } from '../i18n/useTranslation' // 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' const DISPLAY_DEV_MANAGEMENT = process.env.NEXT_PUBLIC_DISPLAY_DEV_MANAGEMENT !== 'false' export default function AdminDashboardPage() { const router = useRouter() const { t } = useTranslation() const { userStats, isAdmin } = useAdminUsers() const user = useAuthStore(s => s.user) const isAdminOrSuper = !!user && ( (user as any)?.role === 'admin' || (user as any)?.userType === 'admin' || (user as any)?.isAdmin === true || ((user as any)?.roles?.includes?.('admin')) || (user as any)?.role === 'super_admin' || (user as any)?.userType === 'super_admin' || (user as any)?.isSuperAdmin === true || ((user as any)?.roles?.includes?.('super_admin')) ) const [isClient, setIsClient] = useState(false) const [isMobile, setIsMobile] = useState(false) // Handle client-side mounting useEffect(() => { setIsClient(true) }, []) useEffect(() => { const mq = window.matchMedia('(max-width: 768px)') const apply = () => setIsMobile(mq.matches) apply() mq.addEventListener?.('change', apply) window.addEventListener('resize', apply, { passive: true }) return () => { mq.removeEventListener?.('change', apply) window.removeEventListener('resize', apply) } }, []) // 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 (

{t('adminDashboard.loading')}

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

{t('adminDashboard.accessDenied')}

{t('adminDashboard.accessDeniedMessage')}

) } const content = (
{/* Header */}

{t('adminDashboard.title')}

{t('adminDashboard.subtitle')}

{/* Warning banner */}

{t('adminDashboard.warningTitle')}

{t('adminDashboard.warningMessage')}

{/* Stats Card */}
{t('adminDashboard.totalUsers')}
{displayStats.totalUsers}
{t('adminDashboard.admins')}
{displayStats.adminUsers}
{t('adminDashboard.active')}
{displayStats.activeUsers}
{t('adminDashboard.pendingVerification')}
{displayStats.verificationPending}
{t('adminDashboard.personal')}
{displayStats.personalUsers}
{t('adminDashboard.company')}
{displayStats.companyUsers}
{/* Management Shortcuts Card */}

{t('adminDashboard.managementShortcuts')}

{t('adminDashboard.managementShortcutsSubtitle')}

{/* Matrix Management */} {/* Coffee Subscription Management */} {/* Contract Management (unchanged) */} {/* Dashboard Management */} {/* User Management (unchanged) */} {/* User Verify */} {/* Finance Management */} {/* Pool Management */} {/* Affiliate Management */} {/* News Management */} {/* Dev Management */} {/* Language Management */}
{/* Server Status & Logs */}

{t('adminDashboard.serverStatusLogs')}

{t('adminDashboard.serverStatusLogsSubtitle')}

{/* Metrics */}

{t('adminDashboard.serverStatusLabel')}{' '} {serverStats.status === 'Online' ? t('adminDashboard.serverOnline') : t('adminDashboard.serverOffline')}

{t('adminDashboard.uptime')} {serverStats.uptime}

{t('adminDashboard.cpuUsage')} {serverStats.cpu}

{t('adminDashboard.memoryUsage')} {serverStats.memory} GB

{t('adminDashboard.autoscaledEnvironment')}
{/* Divider */}
{/* Logs */}

{t('adminDashboard.recentErrorLogs')}

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

{t('adminDashboard.noRecentLogs')}

)} {/* Placeholder for future logs list */} {/* TODO: Replace with mapped log entries */}
) return ( {isMobile ? ( {content} ) : (
{content}
)}
) }