+
+ {/* Search Bar */}
+
+
+ setSearchQuery(e.target.value)}
+ placeholder={t('plugins.searchPlugins', 'Search plugins...')}
+ className="w-full pl-10 pr-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:ring-2 focus:ring-brand-500 focus:border-brand-500"
+ />
+
+
+ {/* Category Filter */}
+
+
+ setSelectedCategory(e.target.value as PluginCategory | 'ALL')}
+ className="px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:ring-2 focus:ring-brand-500 focus:border-brand-500"
+ >
+ {t('plugins.allCategories', 'All Categories')}
+ {t('plugins.categoryEmail', 'Email')}
+ {t('plugins.categoryReports', 'Reports')}
+ {t('plugins.categoryCustomer', 'Customer')}
+ {t('plugins.categoryBooking', 'Booking')}
+ {t('plugins.categoryIntegration', 'Integration')}
+ {t('plugins.categoryAutomation', 'Automation')}
+ {t('plugins.categoryOther', 'Other')}
+
+
+
+
+ {/* Active Filters Summary */}
+ {(searchQuery || selectedCategory !== 'ALL') && (
+
+
+ {t('plugins.showingResults', 'Showing')} {sortedPlugins.length} {t('plugins.results', 'results')}
+
+ {(searchQuery || selectedCategory !== 'ALL') && (
+ {
+ setSearchQuery('');
+ setSelectedCategory('ALL');
+ }}
+ className="text-sm text-brand-600 dark:text-brand-400 hover:underline"
+ >
+ {t('common.clearAll', 'Clear all')}
+
+ )}
+
+ )}
+
+
+
+ {searchQuery || selectedCategory !== 'ALL'
+ ? t('plugins.noPluginsFound', 'No plugins found matching your criteria')
+ : t('plugins.noPluginsAvailable', 'No plugins available yet')}
+
+
+ {sortedPlugins.map((plugin) => (
+
+ {/* Plugin Card Header */}
+
+
+
+
+ {categoryIcons[plugin.category]}
+ {plugin.category}
+
+ {plugin.isFeatured && (
+
+
+ Featured
+
+ )}
+
+ {plugin.isVerified && (
+
+ )}
+
+
+
+ {plugin.name}
+
+
+
+ {plugin.description}
+
+
+ {/* Stats */}
+
+
+
+ {plugin.rating.toFixed(1)}
+ ({plugin.ratingCount})
+
+
+
+ {plugin.installCount.toLocaleString()}
+
+
+
+
+ by {plugin.author} • v{plugin.version}
+
+
+
+ {/* Plugin Card Actions */}
+
+ handleInstall(plugin)}
+ className="flex-1 flex items-center justify-center gap-2 px-4 py-2 bg-brand-600 text-white rounded-lg hover:bg-brand-700 transition-colors font-medium text-sm"
+ >
+
+ {t('plugins.install', 'Install')}
+
+ {
+ setSelectedPlugin(plugin);
+ setShowDetailsModal(true);
+ }}
+ className="px-4 py-2 border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors font-medium text-sm"
+ >
+ {t('plugins.details', 'Details')}
+
+
+
+ ))}
+
+ )}
+
+ {/* Plugin Details Modal */}
+ {showDetailsModal && selectedPlugin && (
+