"use client"; import { useState } from "react"; import Link from "next/link"; import { useLocale, useTranslations } from "next-intl"; import { useDiskId } from "@/hooks/useDiskId"; import { createPreference } from "@/lib/afc"; import { DiskIdInput } from "@/components/afc/DiskIdInput"; import { BalanceDisplay } from "@/components/afc/BalanceDisplay"; import { AfcPackageCard } from "@/components/afc/AfcPackageCard"; const PRICE_PER_AFC = 15; const PACKAGES = [ { amount: 10, popular: false }, { amount: 25, popular: true }, { amount: 50, popular: false }, { amount: 100, popular: false }, ]; export default function BuyAfcPage() { const t = useTranslations("afc"); const locale = useLocale(); const disk = useDiskId(); const [customAmount, setCustomAmount] = useState(""); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); async function handleBuy(amount: number) { if (!disk.verified || !disk.diskId) return; setLoading(true); setError(null); try { const data = await createPreference(disk.diskId, amount); // Redirect to MercadoPago checkout window.location.href = data.initPoint; } catch (e: any) { setError(e.message); setLoading(false); } } return (
{/* Back */} ← {t("back_to_store")}

{t("buy_title")}

{t("buy_subtitle")}

{/* Disk ID */}
disk.verify(disk.diskId)} loading={disk.loading} verified={disk.verified} playerName={disk.playerName} error={disk.error} onClear={disk.clear} />
{disk.verified && ( <> {/* Balance */}
{/* Packages */}

{t("select_package")}

{PACKAGES.map((pkg) => ( handleBuy(pkg.amount)} /> ))}
{/* Custom amount */}

{t("custom_amount")}

setCustomAmount(e.target.value)} placeholder="AFC" className="w-full bg-gray-800 border border-white/10 rounded-xl px-4 py-3 text-white placeholder:text-gray-600 focus:outline-none focus:border-amber-500/50 transition-all" /> {customAmount && Number(customAmount) > 0 && ( = ${Number(customAmount) * PRICE_PER_AFC} MXN )}
{error && (
{error}
)} {/* Payment info */}

{t("payment_info")}

)}
); }