diff --git a/.gitignore b/.gitignore
index a547bf3..0acd2d1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,9 @@ node_modules
dist
dist-ssr
*.local
+.env
+.env.*
+.npm-cache/
# Editor directories and files
.vscode/*
diff --git a/src/App.tsx b/src/App.tsx
index c91cff5..9deaabf 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -8,7 +8,7 @@ import { ProtectedRoute } from "@/components/auth/ProtectedRoute";
import { PageLoader } from "@/components/ui/PageLoader"; // Added import for PageLoader
import Login from "./pages/Login";
import Dashboard from "./pages/Dashboard";
-import PartnerDirectory from "./features/partners/PartnerDirectory";
+import Partners from "./pages/Partners";
import PartnerProfile from "./features/partners/PartnerProfile";
import Events from "./pages/Events";
import Users from "./pages/Users";
@@ -45,7 +45,7 @@ const App = () => (
path="/partners"
element={
{getDisplayName()}
-Admin
+{user?.role || 'Admin'}
156
-Total Partners
-12
-Pending KYC
-2
-Stripe Issues
-| Partner | -KYC Status | -Stripe | -Revenue | -Events | -Actions | -
|---|---|---|---|---|---|
|
-
- {partner.name} -{partner.email} + useEffect(() => { + loadPartners(); + }, []); + + const filteredPartners = useMemo(() => { + let list = [...partners]; + + if (searchQuery.trim()) { + const q = searchQuery.toLowerCase(); + list = list.filter(p => + p.name.toLowerCase().includes(q) || + p.primary_contact_person_name.toLowerCase().includes(q) || + p.primary_contact_person_email.toLowerCase().includes(q) + ); + } + + switch (activeTab) { + case 'pending_kyc': + list = list.filter(p => p.kyc_compliance_status?.toLowerCase() === 'pending'); + break; + case 'active': + list = list.filter(p => p.status?.toLowerCase() === 'active'); + break; + } + + return list; + }, [partners, searchQuery, activeTab]); + + const stats = useMemo(() => ({ + total: partners.length, + active: partners.filter(p => p.status?.toLowerCase() === 'active').length, + pendingKyc: partners.filter(p => p.kyc_compliance_status?.toLowerCase() === 'pending').length, + kycApproved: partners.filter(p => p.is_kyc_compliant).length, + }), [partners]); + + return ( +
+
+
+
- |
- - - {partner.kycStatus.charAt(0).toUpperCase() + partner.kycStatus.slice(1)} - - | -- - {partner.stripeStatus.charAt(0).toUpperCase() + partner.stripeStatus.slice(1)} - - | -- {formatCurrency(partner.totalRevenue)} - | -- {partner.eventsCount} - | -- - | -
{stats.total}
+{stats.active}
+{stats.pendingKyc}
+{stats.kycApproved}
+{error}
+ +