import { useEffect, useMemo, useState } from "react"; import { useLocation, useNavigate, Link } from "react-router-dom"; import { useAuthStore } from "../store/authStore"; import InputField from "../components/form/input/InputField"; import TextArea from "../components/form/input/TextArea"; import Label from "../components/form/Label"; import Button from "../components/ui/button/Button"; const PLAN_COPY: Record = { starter: { name: "Starter", price: "$49/mo", content: "50 content pieces/month" }, growth: { name: "Growth", price: "$149/mo", content: "200 content pieces/month" }, scale: { name: "Scale", price: "$349/mo", content: "500 content pieces/month" }, }; export default function Payment() { const location = useLocation(); const navigate = useNavigate(); const user = useAuthStore((s) => s.user); const [contactEmail, setContactEmail] = useState(""); const [note, setNote] = useState(""); const [error, setError] = useState(""); const planSlug = useMemo(() => new URLSearchParams(location.search).get("plan") || "", [location.search]); const plan = useMemo(() => { const slugFromAccount = user?.account?.plan?.slug; const slug = planSlug || slugFromAccount || ""; return slug ? PLAN_COPY[slug] : null; }, [planSlug, user?.account?.plan?.slug]); const mailtoHref = useMemo(() => { if (!plan || !contactEmail.trim()) return ""; const subject = encodeURIComponent(`Payment submitted for ${plan.name}`); const body = encodeURIComponent( `Plan: ${plan.name}\nAccount: ${user?.account?.slug || user?.account?.id || "-"}\nEmail: ${contactEmail}\nNotes/Reference: ${note || "-"}` ); return `mailto:sales@igny8.com?subject=${subject}&body=${body}`; }, [plan, contactEmail, note, user?.account?.slug, user?.account?.id]); useEffect(() => { if (!plan || !user) { navigate("/pricing", { replace: true }); } }, [plan, navigate, user]); const handleRequest = (e: React.MouseEvent) => { if (!plan) { e.preventDefault(); navigate("/pricing", { replace: true }); return; } if (!contactEmail.trim()) { e.preventDefault(); setError("Please enter a contact email."); return; } setError(""); }; return (

Confirm your plan

Complete your subscription

Change plan
{plan && (

{plan.name}

{plan.price}

{plan.content}

Payment is completed offline (bank transfer). Submit your email and reference below; we will verify and activate your account.

)}
setContactEmail(e.target.value)} placeholder="you@example.com" />