'use client' import { useState, useEffect, useCallback } from 'react' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { Input } from '@/components/ui/input' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' import { Gift, Users, DollarSign, Calendar, Search, Copy, Share2, Mail, Phone, TrendingUp, User, Plus } from 'lucide-react' import { motion } from 'framer-motion' import { toast } from 'sonner' import { DashboardHeader } from '@/components/dashboard/DashboardHeader' interface Referral { id: string name: string email: string phone?: string joinedAt: string isActive: boolean totalOrders: number totalSpent: number commissionEarned: number status: 'ACTIVE' | 'INACTIVE' | 'PENDING' } interface ReferralStats { totalReferrals: number activeReferrals: number pendingReferrals: number totalCommissionEarned: number thisMonthReferrals: number thisMonthCommission: number } export default function ReferralsPage() { const [referrals, setReferrals] = useState([]) const [stats, setStats] = useState(null) const [loading, setLoading] = useState(true) const [searchTerm, setSearchTerm] = useState('') const [referralCode, setReferralCode] = useState('') const fetchReferrals = useCallback(async () => { try { const [referralsRes, statsRes, userRes] = await Promise.all([ fetch('/api/dashboard/referrals'), fetch('/api/dashboard/referrals/stats'), fetch('/api/user/profile') ]) const [referralsData, statsData, userData] = await Promise.all([ referralsRes.json(), statsRes.json(), userRes.json() ]) setReferrals(referralsData.referrals || []) setStats(statsData) setReferralCode(userData.referralCode) } catch (error) { console.error('Error fetching referrals:', error) toast.error('Failed to load referrals data') } finally { setLoading(false) } }, []) useEffect(() => { fetchReferrals() }, [fetchReferrals]) const filteredReferrals = referrals.filter(referral => referral.name.toLowerCase().includes(searchTerm.toLowerCase()) || referral.email.toLowerCase().includes(searchTerm.toLowerCase()) ) const copyReferralLink = () => { const referralLink = `${window.location.origin}/auth/signup?ref=${referralCode}` navigator.clipboard.writeText(referralLink) toast.success('Referral link copied to clipboard!') } const shareReferralLink = () => { const referralLink = `${window.location.origin}/auth/signup?ref=${referralCode}` if (navigator.share) { navigator.share({ title: 'Join Padmaaja Rasooi', text: 'Join my team at Padmaaja Rasooi and start your rice business!', url: referralLink }) } else { copyReferralLink() } } const inviteViaEmail = () => { const referralLink = `${window.location.origin}/auth/signup?ref=${referralCode}` const subject = 'Join Padmaaja Rasooi Rice Business Partnership!' const body = `Hi there!\n\nI'd like to invite you to join Padmaaja Rasooi, a premium rice products business where you can earn through our partnership program.\n\nClick here to join: ${referralLink}\n\nBest regards!` window.location.href = `mailto:?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}` } if (loading) { return (
) } return (
{/* Header */} } actions={ } /> {/* Stats Cards - Mobile Responsive Grid */}

Total Referrals

{stats?.totalReferrals || 0}

{stats?.thisMonthReferrals || 0} this month

Active Referrals

{stats?.activeReferrals || 0}

{stats?.pendingReferrals || 0} pending

Total Commission

₹{(stats?.totalCommissionEarned || 0).toFixed(0)}

₹{(stats?.thisMonthCommission || 0).toFixed(0)} this month

Avg. Commission

₹{stats?.totalReferrals ? ((stats?.totalCommissionEarned || 0) / stats.totalReferrals).toFixed(0) : '0'}

Per referral

{/* Referral Link Section - Mobile Optimized */}

Your Referral Link

Share this link to invite friends and earn commissions

{`${typeof window !== 'undefined' ? window.location.origin : ''}/auth/signup?ref=${referralCode}`}
{/* Referrals Management - Mobile Tabs */}
All Active Pending
setSearchTerm(e.target.value)} className="pl-10 text-sm" />
All Referrals ({filteredReferrals.length}) {filteredReferrals.length > 0 ? (
{filteredReferrals.map((referral) => (

{referral.name}

{referral.email}

{referral.phone && (

{referral.phone}

)}
Joined {new Date(referral.joinedAt).toLocaleDateString()}
{referral.isActive ? 'Active' : 'Inactive'}

Orders

{referral.totalOrders}

Spent

₹{referral.totalSpent.toFixed(0)}

Commission

₹{referral.commissionEarned.toFixed(2)}

))}
) : (

No referrals yet

Start inviting friends to build your network

)}
Active Referrals ({filteredReferrals.filter(r => r.isActive).length})
{filteredReferrals.filter(r => r.isActive).map((referral) => (

{referral.name}

{referral.email}

Active

₹{referral.commissionEarned.toFixed(2)}

Commission earned

))}
Pending Referrals ({filteredReferrals.filter(r => !r.isActive).length})
{filteredReferrals.filter(r => !r.isActive).map((referral) => (

{referral.name}

{referral.email}

Pending
))}
) }