"use client";
import { useMemo,useState } from "react";
import { startCampaignCheckout } from "@/lib/campaign-actions";
type Plan={id:string;name:string;priceCents:number;setupFeeCents:number;features:{key:string;limit:number|null}[]};type Module={id:string;name:string;description:string;priceCents:number;future:boolean};type Seller={id:string;name:string};
const money=(cents:number)=>new Intl.NumberFormat("pt-BR",{style:"currency",currency:"BRL"}).format(cents/100);
export function CampaignCheckout({plans,modules,sellers}:{plans:Plan[];modules:Module[];sellers:Seller[]}){
 const [planId,setPlanId]=useState(plans[0]?.id??"");const [selected,setSelected]=useState<string[]>([]);const [domain,setDomain]=useState("");const [domainMode,setDomainMode]=useState<"NEW"|"EXISTING">("NEW");const [domainStatus,setDomainStatus]=useState("");const plan=plans.find(p=>p.id===planId);const monthly=useMemo(()=>(plan?.priceCents??0)+modules.filter(m=>selected.includes(m.id)&&!m.future).reduce((s,m)=>s+m.priceCents,0),[plan,modules,selected]);const setupFee=Math.max(0,(plan?.setupFeeCents??0)-(domainMode==="EXISTING"?5000:0));
 async function checkDomain(){setDomainStatus("Consultando...");const value=domain.trim().toLowerCase();if(!value){setDomainStatus("Digite um domínio.");return}const response=await fetch(`/api/public/domain-check?domain=${encodeURIComponent(value)}`);const data=await response.json();setDomainStatus(data.available===true?"Disponível para registro":data.available===false?"Domínio já registrado":data.message||"Não foi possível consultar")}
 return <form action={startCampaignCheckout} className="campaign-form"><section><p className="campaign-step">01 · ESCOLHA O PLANO</p><div className="campaign-plans">{plans.map(p=><label className={planId===p.id?"selected":""} key={p.id}><input type="radio" name="planId" value={p.id} checked={planId===p.id} onChange={()=>setPlanId(p.id)}/><b>{p.name}</b><strong>{money(p.priceCents)}<small>/mês</small></strong><span>Adesão: {money(p.setupFeeCents)}</span></label>)}</div></section><section><p className="campaign-step">02 · ADICIONE MÓDULOS</p><div className="campaign-modules">{modules.map(m=><label className={m.future?"future":""} key={m.id}><input type="checkbox" name="modules" value={m.id} disabled={m.future} checked={selected.includes(m.id)} onChange={e=>setSelected(e.target.checked?[...selected,m.id]:selected.filter(id=>id!==m.id))}/><span><b>{m.name}</b><small>{m.description}</small></span><strong>{m.future?"Em breve":`+ ${money(m.priceCents)}/mês`}</strong></label>)}</div></section><section><p className="campaign-step">03 · DADOS DA EMPRESA</p><div className="campaign-fields"><label>Responsável<input name="responsibleName" required/></label><label>Empresa<input name="companyName" required/></label><label>CPF ou CNPJ<input name="document" required/></label><label>E-mail<input name="email" type="email" required/></label><label>WhatsApp<input name="phone" required/></label><label>Segmento<input name="segment" required/></label><label>Estado<input name="state" maxLength={2} placeholder="PR" required/></label><label>Cidade<input name="city" required/></label><label>Modelo<select name="businessModel"><option value="PRODUCTS">Produtos</option><option value="SERVICES">Serviços</option><option value="MIXED">Produtos e serviços</option></select></label><label>Vendedor indicado<select name="sellerId"><option value="">Não fui indicado</option>{sellers.map(s=><option key={s.id} value={s.id}>{s.name}</option>)}</select></label><label className="wide">Logotipo da empresa<input name="logo" type="file" accept="image/png,image/jpeg,image/webp"/><small>PNG transparente, JPG ou WebP, até 5 MB.</small></label></div></section><section><p className="campaign-step">04 · DOMÍNIO PERSONALIZADO</p><div className="domain-mode"><label><input type="radio" name="domainMode" value="NEW" checked={domainMode==="NEW"} onChange={()=>setDomainMode("NEW")}/> Quero registrar um domínio novo</label><label><input type="radio" name="domainMode" value="EXISTING" checked={domainMode==="EXISTING"} onChange={()=>setDomainMode("EXISTING")}/> Já tenho domínio — desconto de R$ 50,00</label></div><div className="domain-check"><input name="domain" value={domain} onChange={e=>setDomain(e.target.value)} placeholder="suaempresa.com ou suaempresa.com.br"/>{domainMode==="NEW"&&<button type="button" onClick={checkDomain}>Ver disponibilidade</button>}<span>{domainMode==="EXISTING"?"Você receberá as instruções para apontar o DNS à Inixis.":domainStatus}</span></div></section><aside className="campaign-summary"><div><span>Adesão</span><strong>{money(setupFee)}</strong><small>{domainMode==="EXISTING"?"R$ 50,00 de desconto aplicado":"Pagamento agora"}</small></div><div><span>Mensalidade</span><strong>{money(monthly)}/mês</strong><small>Plano + módulos selecionados</small></div><button type="submit">Ir para o pagamento da adesão →</button></aside></form>;
}
