'use client' import { useSession } from 'next-auth/react' import { useEffect, useState } from 'react' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' import { Users, Copy, QrCode, TrendingUp, Calendar, Share2, Download, Mail, MessageCircle } from 'lucide-react' import { toast } from 'sonner' import { motion } from 'framer-motion' import QRCodeLib from 'qrcode' import Image from 'next/image' interface TeamMember { id: string name: string email: string role: string joinedAt: string referrals: TeamMember[] } interface TeamStats { totalTeamSize: number levels: Array<{ level: number count: number }> } interface TeamData { directReferrals: TeamMember[] teamStats: TeamStats } export default function TeamPage() { const { data: session } = useSession() const [teamData, setTeamData] = useState(null) const [loading, setLoading] = useState(true) const [qrCodeUrl, setQrCodeUrl] = useState('') const [generatingQR, setGeneratingQR] = useState(false) useEffect(() => { fetchTeamData() }, []) const fetchTeamData = async () => { try { const response = await fetch('/api/dashboard/team') if (response.ok) { const data = await response.json() setTeamData(data) } } catch (error) { console.error('Error fetching team data:', error) toast.error('Failed to load team data') } finally { setLoading(false) } } const getReferralLink = () => { return `${window.location.origin}/auth/signup?ref=${session?.user?.referralCode}` } const copyReferralLink = () => { if (session?.user?.referralCode) { navigator.clipboard.writeText(getReferralLink()) toast.success('Referral link copied to clipboard!') } } const generateQRCode = async () => { if (!session?.user?.referralCode) return setGeneratingQR(true) try { const url = await QRCodeLib.toDataURL(getReferralLink(), { width: 200, margin: 2, color: { dark: '#1f2937', light: '#ffffff' } }) setQrCodeUrl(url) toast.success('QR code generated successfully!') } catch (error) { console.error('Error generating QR code:', error) toast.error('Failed to generate QR code') } finally { setGeneratingQR(false) } } const downloadQRCode = () => { if (!qrCodeUrl) return const link = document.createElement('a') link.download = `referral-qr-${session?.user?.referralCode}.png` link.href = qrCodeUrl link.click() toast.success('QR code downloaded!') } const shareViaWhatsApp = () => { const message = `Hey! Join Padmaaja Rasooi premium rice business using my referral link and start earning: ${getReferralLink()}` window.open(`https://wa.me/?text=${encodeURIComponent(message)}`, '_blank') } const shareViaEmail = () => { 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: ${getReferralLink()}\n\nBest regards!` window.location.href = `mailto:?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}` } if (loading) { return (
) } return (
{/* Team Stats */}

Total Team Size

{teamData?.teamStats.totalTeamSize || 0}

All levels combined

Direct Referrals

{teamData?.directReferrals.length || 0}

Level 1 members

Active Levels

{teamData?.teamStats.levels.filter(l => l.count > 0).length || 0}

Out of 5 levels

Referral Code

{session?.user?.referralCode}

Your unique code

{/* Enhanced Tabs */} Overview Direct Referrals Level Breakdown Referral Tools Team Structure Overview Your network across all 5 levels
{teamData?.teamStats.levels.map((level) => (
{level.level}
Level {level.level}

{level.level === 1 ? 'Direct referrals' : `${level.level} levels down`}

0 ? 'default' : 'secondary'} className="text-sm"> {level.count} {level.count === 1 ? 'member' : 'members'}
))}
Direct Referrals Members you directly referred {(teamData?.directReferrals || []).length === 0 ? (

No direct referrals yet

Start sharing your referral link to build your team

) : (
{teamData?.directReferrals.map((member, index) => (
{member.name?.[0] || member.email[0]}

{member.name || 'Unknown'}

{member.email}

Joined {new Date(member.joinedAt).toLocaleDateString()}

{member.role}

{member.referrals?.length || 0} referrals

))}
)}
{teamData?.teamStats.levels.map((level, index) => ( 0 ? 'bg-gradient-to-br from-white to-blue-50' : 'bg-gradient-to-br from-gray-50 to-gray-100' }`}>
{level.level}
Level {level.level}
0 ? 'default' : 'secondary'}> {level.count}
{level.level === 1 ? 'Direct referrals' : `${level.level} levels down`}
{level.count}

{level.count === 1 ? 'member' : 'members'}

))}
{/* Referral Link Card */} Referral Link Share your unique referral link

{getReferralLink()}

{/* QR Code Card */} QR Code Generate and share QR code
{qrCodeUrl ? (
Referral QR Code
) : (

Click to generate QR code

)}
{qrCodeUrl && ( )}
) }