import { Head } from '@inertiajs/react';
import AdminLayout from '@/Layouts/AdminLayout';
import Card from '@/Components/UI/Card';
import Badge from '@/Components/UI/Badge';
import StatTile from '@/Components/UI/StatTile';

interface ReferralRow {
    id: number;
    referrer_name: string;
    referred_name: string;
    programme_title: string | null;
    status: 'pending' | 'rewarded';
    reward_amount: string | null;
    created_at: string;
}

export default function Index({
    referrals,
    stats,
}: {
    referrals: ReferralRow[];
    stats: { total_referrals: number; rewarded_referrals: number; total_paid_out: string };
}) {
    return (
        <AdminLayout>
            <Head title="Referral Wallets" />

            <h1 className="text-institute-title text-on-surface">Referral Wallets</h1>
            <p className="text-body-md text-on-surface-variant">
                Institution-wide visibility into the student referral programme and wallet liability.
            </p>

            <div className="mt-8 grid gap-4 md:grid-cols-3">
                <StatTile label="Total Referrals" value={stats.total_referrals} />
                <StatTile label="Rewarded Referrals" value={stats.rewarded_referrals} />
                <StatTile
                    label="Total Wallet Liability"
                    value={`$${Number(stats.total_paid_out).toLocaleString()}`}
                    hint="Reconciled manually until payment infrastructure is live"
                />
            </div>

            <Card className="mt-8 overflow-x-auto p-0">
                <table className="w-full text-left text-sm">
                    <thead className="border-b border-outline-variant text-on-surface-variant">
                        <tr>
                            <th className="px-6 py-3 font-medium">Referrer</th>
                            <th className="px-6 py-3 font-medium">Referred</th>
                            <th className="px-6 py-3 font-medium">Programme</th>
                            <th className="px-6 py-3 font-medium">Status</th>
                            <th className="px-6 py-3 font-medium">Reward</th>
                            <th className="px-6 py-3 font-medium">Date</th>
                        </tr>
                    </thead>
                    <tbody>
                        {referrals.map((referral) => (
                            <tr key={referral.id} className="border-b border-outline-variant last:border-0">
                                <td className="px-6 py-3 font-medium text-on-surface">{referral.referrer_name}</td>
                                <td className="px-6 py-3 text-on-surface-variant">{referral.referred_name}</td>
                                <td className="px-6 py-3 text-on-surface-variant">{referral.programme_title ?? '—'}</td>
                                <td className="px-6 py-3">
                                    <Badge tone={referral.status === 'rewarded' ? 'published' : 'draft'}>
                                        {referral.status}
                                    </Badge>
                                </td>
                                <td className="px-6 py-3 text-on-surface-variant">
                                    {referral.reward_amount ? `$${Number(referral.reward_amount).toLocaleString()}` : '—'}
                                </td>
                                <td className="px-6 py-3 text-on-surface-variant">{referral.created_at}</td>
                            </tr>
                        ))}
                        {referrals.length === 0 && (
                            <tr>
                                <td colSpan={6} className="px-6 py-6 text-center text-on-surface-variant">
                                    No referrals yet.
                                </td>
                            </tr>
                        )}
                    </tbody>
                </table>
            </Card>
        </AdminLayout>
    );
}
