import React, { useMemo, useState } from 'react'; import { Lock, Shield, ShieldAlert, Scan, Activity, TrendingUp, Check, X, ChevronRight, } from 'lucide-react'; const admin_url = tpsaAdmin.admin_url; const allActiveFeatures = tpsaAdmin.feature_status.all_active_features; const defaultFeatures = [ { id: 'analytics', category: 'monitoring', name: 'Safety Analytics', description: 'Security insights', icon: TrendingUp, stats: { value: '98%', label: 'Score' }, url: admin_url + 'admin.php?page=tp-admin-safety-guard&tab=analytics&tpsa-setting=analytics', }, { id: 'limit-login-attempts', category: 'security-core', name: 'Limit Login Attempts', description: 'Prevent brute force attacks', icon: Lock, stats: { value: '0', label: 'Attacks Blocked' }, url: admin_url + 'admin.php?page=tp-admin-safety-guard&tab=security-core&tpsa-setting=limit-login-attempts', }, { id: 'custom-login-url', category: 'security-core', name: 'Custom Login URL', description: 'Prevent brute force attacks', icon: Lock, // stats: { value: '0', label: 'Attacks Blocked' }, url: admin_url + 'admin.php?page=tp-admin-safety-guard&tab=security-core&tpsa-setting=custom-login-url', }, { id: 'two-factor-auth', category: 'security-core', name: 'Two-Factor Authentication', description: 'Extra layer of security', icon: Shield, stats: { value: '0', label: 'Users Enabled' }, url: admin_url + 'admin.php?page=tp-admin-safety-guard&tab=security-core&tpsa-setting=two-factor-auth', }, { id: 'password-protection', category: 'security-core', name: 'Password Protection', description: 'Enforce strong passwords', icon: Lock, stats: { value: '6+', label: 'Min Characters' }, url: admin_url + 'admin.php?page=tp-admin-safety-guard&tab=security-core&tpsa-setting=password-protection', }, { id: 'recaptcha', category: 'security-core', name: 'Google reCAPTCHA', description: 'Bot protection', icon: Shield, // stats: { value: '0', label: 'Bots Blocked' }, url: admin_url + 'admin.php?page=tp-admin-safety-guard&tab=security-core&tpsa-setting=recaptcha', }, { id: 'web-application-firewall', category: 'firewall', name: 'Web Application Firewall', description: 'Real-time protection', icon: ShieldAlert, // stats: { value: '0', label: 'Threats Blocked' }, url: admin_url + 'admin.php?page=tp-admin-safety-guard&tab=firewall-malware&tpsa-setting=web-application-firewall', }, { id: 'login-logs-activity', category: 'monitoring', name: 'Login Logs & Activity', description: 'Track all login attempts', icon: Activity, stats: { value: '1', label: 'Today' }, url: admin_url + 'admin.php?page=tp-admin-safety-guard&tab=login-logs-activity&tpsa-setting=login-logs-activity#SuccessfulLogins', }, ]; export default function FeatureGrid({ items = defaultFeatures, category = 'all', onConfigure, onViewDetails, className = '', }) { const [selectedFeature, setSelectedFeature] = useState(null); const filteredFeatures = useMemo(() => { if (!items?.length) return []; if (!category || category === 'all') return items; return items.filter((f) => f.category === category); }, [items, category]); const uid = useMemo(() => `fg-${Math.random().toString(36).slice(2, 9)}`, []); const toggle = (id) => { setSelectedFeature((prev) => (prev === id ? null : id)); }; return (
{filteredFeatures.map((feature) => { const FeatureIcon = feature.icon; const isSelected = selectedFeature === feature.id; return (
toggle(feature.id)} onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); toggle(feature.id); } }} >
{allActiveFeatures.includes(feature.id) ? ( ) : ( )}

{feature.name}

{feature.description}

{feature.stats && (

{feature.stats.value}

{feature.stats.label}

)}
); })}
); }