// FormularioProprietario — captação de proprietário, compartilhada pelo site.
// ────────────────────────────────────────────────────────────────────────────
// Substitui o formulário decorativo que existia na OwnerScreen: os campos não
// tinham estado, o botão não tinha ação e nada era enviado a lugar nenhum.
// Todo lead que chegou por ali se perdeu.
//
// Agora o envio faz três coisas, nessa ordem:
//   1. grava o lead no Firebase (POST em /sbl_leads), para ficar registrado
//      mesmo que a pessoa desista do WhatsApp;
//   2. abre o WhatsApp com a mensagem já escrita, inclusive com o resumo da
//      simulação quando o formulário vem do simulador de renda;
//   3. mostra confirmação na tela, para a pessoa saber que deu certo.
//
// O passo 1 nunca bloqueia o passo 2: se o Firebase falhar, o contato ainda
// acontece. Perder o registro é ruim; perder o cliente é pior.
// ────────────────────────────────────────────────────────────────────────────

const _LEADS_DB = 'https://sblimoveis-default-rtdb.firebaseio.com';

function _soDigitos(v) { return String(v || '').replace(/\D/g, ''); }

// (83) 9 9958-5248
function _mascaraTelefone(v) {
  const d = _soDigitos(v).slice(0, 11);
  if (d.length <= 2) return d;
  if (d.length <= 3) return `(${d.slice(0, 2)}) ${d.slice(2)}`;
  if (d.length <= 7) return `(${d.slice(0, 2)}) ${d.slice(2, 3)} ${d.slice(3)}`;
  return `(${d.slice(0, 2)}) ${d.slice(2, 3)} ${d.slice(3, 7)}-${d.slice(7)}`;
}

async function registrarLead(lead) {
  try {
    const resp = await fetch(`${_LEADS_DB}/sbl_leads.json`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(lead),
    });
    return resp.ok;
  } catch (e) {
    return false;
  }
}
window.registrarLead = registrarLead;

function FormularioProprietario({ origem, contexto, mensagemWhatsapp, titulo, subtitulo, comTipo }) {
  const { Button } = window.SBLImVeisDesignSystem_08a506;
  const { isMobile } = window.useResponsive();

  const [nome, setNome] = React.useState('');
  const [fone, setFone] = React.useState('');
  const [tipo, setTipo] = React.useState('');
  const [erros, setErros] = React.useState({});
  const [enviando, setEnviando] = React.useState(false);
  const [enviado, setEnviado] = React.useState(false);

  function validar() {
    const e = {};
    if (nome.trim().length < 3) e.nome = 'Informe o seu nome.';
    const d = _soDigitos(fone);
    if (d.length < 10 || d.length > 11) e.fone = 'Informe um WhatsApp com DDD.';
    if (comTipo && !tipo) e.tipo = 'Escolha o tipo de imóvel.';
    setErros(e);
    return Object.keys(e).length === 0;
  }

  async function enviar(ev) {
    ev.preventDefault();
    if (enviando) return;
    if (!validar()) return;
    setEnviando(true);

    const lead = {
      nome: nome.trim(),
      whatsapp: _soDigitos(fone),
      whatsappFormatado: fone,
      tipoImovel: tipo || (contexto && contexto.tipo) || '',
      origem: origem || 'site',
      contexto: contexto || null,
      criadoEm: new Date().toISOString(),
      status: 'novo',
    };

    await registrarLead(lead);

    const texto = (mensagemWhatsapp && mensagemWhatsapp.trim())
      ? mensagemWhatsapp
      : `Olá! Sou ${lead.nome} e tenho um imóvel${lead.tipoImovel ? ` (${lead.tipoImovel})` : ''} em João Pessoa que gostaria de rentabilizar com locação de temporada.`;

    const url = `https://wa.me/558399585248?text=${encodeURIComponent(`${texto}\n\nMeu nome: ${lead.nome}`)}`;
    window.open(url, '_blank', 'noopener');

    setEnviando(false);
    setEnviado(true);
  }

  const estiloCampo = (temErro) => ({
    width: '100%', height: 48, padding: '0 15px', boxSizing: 'border-box',
    borderRadius: 'var(--radius-md)',
    border: '1px solid ' + (temErro ? 'var(--color-danger)' : 'var(--border-default)'),
    fontFamily: 'var(--font-body)', fontSize: 15, color: 'var(--text-strong)',
    background: 'var(--surface-card)', outline: 'none',
  });

  if (enviado) {
    return (
      <div style={{ background: 'var(--surface-card)', borderRadius: 'var(--radius-xl)', padding: isMobile ? '32px 24px' : '40px 34px', textAlign: 'center', boxShadow: 'var(--shadow-xl)' }}>
        <div style={{ width: 58, height: 58, borderRadius: '50%', background: 'var(--color-success-bg)', display: 'inline-flex', alignItems: 'center', justifyContent: 'center', marginBottom: 18 }}>
          <i data-lucide="check" style={{ width: 28, height: 28, color: 'var(--color-success)' }}></i>
        </div>
        <h3 style={{ fontFamily: 'var(--font-display)', fontWeight: 700, fontSize: 23, color: 'var(--text-strong)', margin: '0 0 10px' }}>
          Recebemos o seu contato
        </h3>
        <p style={{ fontFamily: 'var(--font-body)', fontSize: 14.5, lineHeight: 1.65, color: 'var(--text-body)', margin: '0 0 22px' }}>
          Abrimos o WhatsApp com a sua mensagem pronta. Se a janela não apareceu, o bloqueador de pop-ups pode tê-la impedido — use o botão abaixo.
        </p>
        <a
          href={`https://wa.me/558399585248?text=${encodeURIComponent(mensagemWhatsapp || 'Olá! Gostaria de falar sobre a administração do meu imóvel por temporada.')}`}
          target="_blank" rel="noopener noreferrer"
          style={{ display: 'inline-flex', alignItems: 'center', gap: 9, padding: '13px 24px', borderRadius: 'var(--radius-md)', background: 'var(--color-primary)', color: 'var(--cream-50)', textDecoration: 'none', fontFamily: 'var(--font-body)', fontWeight: 600, fontSize: 15 }}
        >
          <i data-lucide="message-circle" style={{ width: 18, height: 18 }}></i>
          Abrir o WhatsApp
        </a>
      </div>
    );
  }

  return (
    <form onSubmit={enviar} noValidate style={{ background: 'var(--surface-card)', borderRadius: 'var(--radius-xl)', padding: isMobile ? '26px 22px' : '32px 30px', boxShadow: 'var(--shadow-xl)' }}>
      <h3 style={{ fontFamily: 'var(--font-display)', fontWeight: 700, fontSize: 23, color: 'var(--text-strong)', margin: '0 0 6px' }}>
        {titulo || 'Falar com um consultor'}
      </h3>
      <p style={{ fontFamily: 'var(--font-body)', fontSize: 13.5, color: 'var(--text-muted)', margin: '0 0 22px', lineHeight: 1.55 }}>
        {subtitulo || 'Sem custo e sem compromisso. Retornamos em até um dia útil.'}
      </p>

      <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
        <div>
          <label htmlFor="lead-nome" style={{ display: 'block', fontFamily: 'var(--font-body)', fontSize: 12.5, fontWeight: 600, color: 'var(--text-strong)', marginBottom: 7 }}>Nome completo</label>
          <input id="lead-nome" type="text" value={nome} placeholder="Seu nome"
            onChange={(e) => { setNome(e.target.value); if (erros.nome) setErros((x) => ({ ...x, nome: null })); }}
            style={estiloCampo(erros.nome)} />
          {erros.nome && <span style={{ fontFamily: 'var(--font-body)', fontSize: 12.5, color: 'var(--color-danger)', marginTop: 5, display: 'block' }}>{erros.nome}</span>}
        </div>

        <div>
          <label htmlFor="lead-fone" style={{ display: 'block', fontFamily: 'var(--font-body)', fontSize: 12.5, fontWeight: 600, color: 'var(--text-strong)', marginBottom: 7 }}>WhatsApp</label>
          <input id="lead-fone" type="tel" inputMode="numeric" value={fone} placeholder="(83) 9 0000-0000"
            onChange={(e) => { setFone(_mascaraTelefone(e.target.value)); if (erros.fone) setErros((x) => ({ ...x, fone: null })); }}
            style={estiloCampo(erros.fone)} />
          {erros.fone && <span style={{ fontFamily: 'var(--font-body)', fontSize: 12.5, color: 'var(--color-danger)', marginTop: 5, display: 'block' }}>{erros.fone}</span>}
        </div>

        {comTipo && (
          <div>
            <label htmlFor="lead-tipo" style={{ display: 'block', fontFamily: 'var(--font-body)', fontSize: 12.5, fontWeight: 600, color: 'var(--text-strong)', marginBottom: 7 }}>Tipo de imóvel</label>
            <select id="lead-tipo" value={tipo}
              onChange={(e) => { setTipo(e.target.value); if (erros.tipo) setErros((x) => ({ ...x, tipo: null })); }}
              style={{ ...estiloCampo(erros.tipo), cursor: 'pointer' }}>
              <option value="">Selecione</option>
              {['Apartamento', 'Flat', 'Studio', 'Casa', 'Cobertura'].map((t) => <option key={t} value={t}>{t}</option>)}
            </select>
            {erros.tipo && <span style={{ fontFamily: 'var(--font-body)', fontSize: 12.5, color: 'var(--color-danger)', marginTop: 5, display: 'block' }}>{erros.tipo}</span>}
          </div>
        )}

        <Button variant="primary" size="lg" full iconRight="arrow-right" type="submit" disabled={enviando}>
          {enviando ? 'Enviando…' : 'Quero minha avaliação gratuita'}
        </Button>

        <p style={{ fontFamily: 'var(--font-body)', fontSize: 11.5, color: 'var(--text-subtle)', margin: 0, lineHeight: 1.55, textAlign: 'center' }}>
          Ao enviar, você concorda que a SBL entre em contato sobre a administração do seu imóvel. Seus dados não são compartilhados com terceiros.
        </p>
      </div>
    </form>
  );
}
window.FormularioProprietario = FormularioProprietario;
