import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Loader2, Server, Database, Code2, Globe, ShoppingCart, Zap, UserPlus, CheckCircle2, AlertTriangle, XCircle, RefreshCw, Copy, Download, Check, } from "lucide-react" import { useSystemInfo } from "../hooks/use-system-info" import { minimumRequirements, requiredExtensions, recommendedExtensions, compareVersions, compareMemory, SystemRequirement } from "../config" function StatusIcon({ status }: { status: 'pass' | 'warning' | 'fail' }) { switch (status) { case 'pass': return case 'warning': return case 'fail': return } } function StatusBadge({ status }: { status: 'pass' | 'warning' | 'fail' }) { const variants = { pass: 'bg-green-100 text-green-800 border-green-200', warning: 'bg-yellow-100 text-yellow-800 border-yellow-200', fail: 'bg-red-100 text-red-800 border-red-200', } const labels = { pass: 'OK', warning: 'Warning', fail: 'Failed', } return ( {labels[status]} ) } function RequirementRow({ req }: { req: SystemRequirement }) { return (

{req.name}

{req.description && (

{req.description}

)}

Required: {req.required}

Current: {req.current}

) } function InfoRow({ label, value, mono = false }: { label: string; value: string | number | boolean; mono?: boolean }) { const displayValue = typeof value === 'boolean' ? (value ? 'Yes' : 'No') : String(value) return (
{label} {displayValue || 'N/A'}
) } export function SystemInfoPage() { const { systemInfo, loading, error, copying, refresh, copyToClipboard, downloadReport } = useSystemInfo() if (loading) { return (

Loading system information...

) } if (error) { return (

Failed to load system info

{error}

) } // Build requirements list const requirements: SystemRequirement[] = [ { name: 'PHP Version', required: minimumRequirements.php.version + '+', current: systemInfo.php.version, status: compareVersions(systemInfo.php.version, minimumRequirements.php.version), }, { name: 'PHP Memory Limit', required: minimumRequirements.php.memoryLimit, current: systemInfo.php.memoryLimit, status: compareMemory(systemInfo.php.memoryLimit, minimumRequirements.php.memoryLimit), }, { name: 'WordPress Version', required: minimumRequirements.wordpress.version + '+', current: systemInfo.wordpress.version, status: compareVersions(systemInfo.wordpress.version, minimumRequirements.wordpress.version), }, { name: 'WordPress Memory Limit', required: minimumRequirements.wordpress.memoryLimit, current: systemInfo.wordpress.memoryLimit, status: compareMemory(systemInfo.wordpress.memoryLimit, minimumRequirements.wordpress.memoryLimit), }, { name: 'MySQL Version', required: minimumRequirements.mysql.version + '+', current: systemInfo.mysql.version, status: compareVersions(systemInfo.mysql.version, minimumRequirements.mysql.version), }, { name: 'WooCommerce Version', required: minimumRequirements.woocommerce.version + '+', current: systemInfo.woocommerce.version || 'Not Installed', status: systemInfo.woocommerce.version ? compareVersions(systemInfo.woocommerce.version, minimumRequirements.woocommerce.version) : 'fail', }, ] const passCount = requirements.filter(r => r.status === 'pass').length const warningCount = requirements.filter(r => r.status === 'warning').length const failCount = requirements.filter(r => r.status === 'fail').length // Check PHP extensions const extensionStatus = requiredExtensions.map(ext => ({ name: ext, installed: systemInfo.php.extensions.includes(ext), required: true, })) const recommendedStatus = recommendedExtensions.map(ext => ({ name: ext, installed: systemInfo.php.extensions.includes(ext), required: false, })) return (
{/* Header */}

System Info

Server configuration and requirements status

{/* Summary Cards */}

{passCount}

Requirements Passed

0 ? 'border-yellow-200 bg-yellow-50' : ''}>

{warningCount}

Warnings

0 ? 'border-red-200 bg-red-50' : ''}>

{failCount}

Requirements Failed

{/* Requirements & Extensions - Two Column Layout */}
{/* Requirements Check */} System Requirements Minimum requirements for Swift Commerce to run properly {requirements.map((req, index) => ( ))} {/* PHP Extensions */} PHP Extensions Required and recommended PHP extensions

Required Extensions

{extensionStatus.map((ext) => ( {ext.installed ? : } {ext.name} ))}

Recommended Extensions

{recommendedStatus.map((ext) => ( {ext.installed ? : } {ext.name} ))}
{/* Registration Forms Diagnostics */} 0 ? 'border-yellow-200 bg-yellow-50/40' : ''}> Registration Forms Checks that affect WordPress and WooCommerce registration field rendering {systemInfo.registrationForms.warnings.length > 0 && (
Warnings
    {systemInfo.registrationForms.warnings.map((warning) => (
  • {warning}
  • ))}
)}
{/* WordPress Info */} WordPress Environment {/* PHP Info */} PHP Configuration {/* MySQL Info */} Database {/* Server Info */} Server {/* WooCommerce Info */} WooCommerce {/* Swift Commerce Info */} Swift Commerce {systemInfo.swiftCommerce.proVersion && ( )}
Enabled Features
{systemInfo.swiftCommerce.featuresEnabled.length > 0 ? ( systemInfo.swiftCommerce.featuresEnabled.map((feature) => ( {feature} )) ) : ( No features enabled yet )}
) }