import React, { useMemo, useState } from 'react'; import { ShieldAlert, Check, X } from 'lucide-react'; const admin_url = tpsaAdmin.admin_url; const allActiveFeatures = tpsaAdmin.feature_status.all_active_features; const defaultFeatures = [ { id: 'web-application-firewall', category: 'firewall', name: 'Web Application Firewall', description: 'Real-time protection', status: 'active', free: false, icon: ShieldAlert, url: admin_url + 'admin.php?page=tp-admin-safety-guard&tab=firewall-malware&tpsa-setting=web-application-firewall', }, ]; export default function FeatureGrid({ items = defaultFeatures, category = 'all', onConfigure, 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.free ? 'Free' : 'Pro'}

{feature.name}

{feature.description}

{/* */}
); })}
); }