/* Captação: nome + WhatsApp. Ao enviar, abre a conversa no WhatsApp da loja. */
const WPP = '5515996520317';

function telLimpo(t) { return (t || '').replace(/\D/g, ''); }
function mascara(t) {
  const d = telLimpo(t).slice(0, 11);
  if (d.length <= 2) return d;
  if (d.length <= 7) return `(${d.slice(0,2)}) ${d.slice(2)}`;
  return `(${d.slice(0,2)}) ${d.slice(2,3)} ${d.slice(3,7)}-${d.slice(7)}`;
}

function LeadForm({ vehicle, assunto, horario, onDone }) {
  const { Input, Button, SpecList, Icon } = window.Ds55VeCulosDesignSystem_b5c845;
  const [nome, setNome] = React.useState('');
  const [tel, setTel] = React.useState('');
  const [erro, setErro] = React.useState(null);
  const [enviado, setEnviado] = React.useState(false);
  const valido = nome.trim().length > 2 && telLimpo(tel).length >= 10;

  const enviar = () => {
    if (!valido) { setErro('Preencha nome e WhatsApp com DDD.'); return; }
    const texto = assunto === 'visita'
      ? `Oi, sou ${nome}. Quero agendar visita para o ${vehicle.model} ${vehicle.year}${horario ? ' — ' + horario : ''}.`
      : `Oi, sou ${nome}. Quero o laudo do ${vehicle.model} ${vehicle.year}.`;
    setEnviado(true);
    window.open(`https://wa.me/${WPP}?text=${encodeURIComponent(texto)}`, '_blank');
    if (onDone) onDone({ nome, tel, assunto, horario });
  };

  if (enviado) {
    return (
      <div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--esp-4)' }}>
        <span style={{ display: 'inline-flex', alignItems: 'center', gap: 8, font: 'var(--type-etiqueta)', letterSpacing: 'var(--tracking-etiqueta)', color: 'var(--text-muted)' }}>
          <Icon name="circle-check" size={14} color="var(--acento)" /> ABRIMOS O WHATSAPP
        </span>
        <p style={{ margin: 0, font: 'var(--type-corpo)' }}>Se a conversa não abriu, chame direto: <strong>(15) 9 9652-0317</strong>.</p>
        <SpecList direction="column" items={[{ label: 'NOME', value: nome.toUpperCase() }, { label: 'WHATSAPP', value: mascara(tel) }]} />
      </div>
    );
  }

  return (
    <div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--esp-4)' }}>
      <p style={{ margin: 0, font: 'var(--type-corpo)' }}>
        {assunto === 'visita'
          ? `Deixa nome e WhatsApp que eu confirmo ${horario ? 'o horário de ' + horario : 'a visita'} com você.`
          : 'Deixa nome e WhatsApp que eu envio o laudo completo em PDF.'}
      </p>
      <Input label="Nome" placeholder="Como te chamo" autoComplete="name" value={nome} onChange={e => { setNome(e.target.value); setErro(null); }} />
      <Input label="WhatsApp" mono type="tel" inputMode="numeric" autoComplete="tel" placeholder="(41) 9 0000-0000" value={mascara(tel)} onChange={e => { setTel(e.target.value); setErro(null); }} error={erro} />
      <Button size="lg" full onClick={enviar}>{assunto === 'visita' ? 'Confirmar e chamar no WhatsApp' : 'Receber o laudo no WhatsApp'}</Button>
      <span style={{ font: 'var(--type-etiqueta-p)', letterSpacing: 'var(--tracking-etiqueta)', color: 'var(--text-muted)' }}>SÓ USAMOS SEU NÚMERO PARA ESSA CONVERSA</span>
    </div>
  );
}

function Agenda({ valor, onChange }) {
  const { SpecList, Icon } = window.Ds55VeCulosDesignSystem_b5c845;
  const dias = React.useMemo(() => {
    const out = [];
    const hoje = new Date();
    for (let i = 1; out.length < 6; i++) {
      const d = new Date(hoje.getTime() + i * 86400000);
      if (d.getDay() === 0) continue;
      out.push(d);
    }
    return out;
  }, []);
  const [dia, setDia] = React.useState(0);
  const sabado = dias[dia].getDay() === 6;
  const horas = sabado ? ['09:00', '10:00', '11:00', '12:00'] : ['09:00', '11:00', '14:00', '16:00', '17:30'];
  const semana = d => d.toLocaleDateString('pt-BR', { weekday: 'short' }).replace('.', '').toUpperCase();
  const numero = d => String(d.getDate()).padStart(2, '0');
  const mes = d => d.toLocaleDateString('pt-BR', { month: 'short' }).replace('.', '').toUpperCase();
  const rotulo = h => `${semana(dias[dia])} ${numero(dias[dia])}/${String(dias[dia].getMonth() + 1).padStart(2, '0')} · ${h}`;

  return (
    <div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--esp-4)' }}>
      <div>
        <SpecList withIcons items={[{ value: 'ESCOLHA O DIA', icon: 'calendar' }]} style={{ paddingBottom: 'var(--esp-3)' }} />
        <div style={{ display: 'flex', gap: 6, overflowX: 'auto', paddingBottom: 4 }}>
          {dias.map((d, k) => {
            const on = k === dia;
            return (
              <button key={k} onClick={() => { setDia(k); onChange(null); }} style={{
                appearance: 'none', cursor: 'pointer', flex: '0 0 auto', width: 68, padding: '10px 0',
                display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 2,
                border: `var(--borda-fina) solid ${on ? 'var(--preto-asfalto)' : 'var(--border-default)'}`,
                borderBottom: `3px solid ${on ? 'var(--acento)' : 'var(--border-default)'}`,
                background: on ? 'var(--preto-asfalto)' : 'transparent',
                color: on ? 'var(--papel)' : 'var(--text-body)', transition: 'var(--transicao-ui)'
              }}>
                <span style={{ font: 'var(--type-etiqueta-p)', letterSpacing: 'var(--tracking-etiqueta)', opacity: 0.7 }}>{semana(d)}</span>
                <span style={{ font: 'var(--peso-titulo) 20px/1 var(--font-core)', letterSpacing: 'var(--tracking-titulo)' }}>{numero(d)}</span>
                <span style={{ font: 'var(--type-etiqueta-p)', letterSpacing: 'var(--tracking-etiqueta)', opacity: 0.55 }}>{mes(d)}</span>
              </button>
            );
          })}
        </div>
      </div>
      <div>
        <SpecList withIcons items={[{ value: sabado ? 'SÁBADO · 9H ÀS 13H' : 'SEG A SEX · 9H ÀS 18H', icon: 'clock' }]} style={{ paddingBottom: 'var(--esp-3)' }} />
        <div style={{ display: 'flex', gap: 6, flexWrap: 'wrap' }}>
          {horas.map(h => {
            const rot = rotulo(h);
            const on = valor === rot;
            return (
              <button className="agenda-hora" key={h} onClick={() => onChange(rot)} style={{
                appearance: 'none', cursor: 'pointer', padding: '10px 16px',
                border: `var(--borda-fina) solid ${on ? 'var(--preto-asfalto)' : 'var(--border-default)'}`,
                background: on ? 'var(--preto-asfalto)' : 'transparent',
                color: on ? 'var(--papel)' : 'var(--text-body)',
                font: 'var(--peso-titulo) 14px/1 var(--font-core)', letterSpacing: '0.01em',
                display: 'inline-flex', alignItems: 'center', gap: 8, transition: 'var(--transicao-ui)'
              }}>
                {on && <Icon name="check" size={13} color="var(--acento)" />}{h}
              </button>
            );
          })}
        </div>
      </div>
      <div style={{ display: 'flex', alignItems: 'center', gap: 8, minHeight: 20, font: 'var(--type-etiqueta)', letterSpacing: 'var(--tracking-etiqueta)', color: valor ? 'var(--text-title)' : 'var(--text-muted)' }}>
        <Icon name={valor ? 'circle-check' : 'info'} size={14} color={valor ? 'var(--acento)' : 'var(--text-muted)'} />
        {valor ? valor : 'SELECIONE UM HORÁRIO'}
      </div>
    </div>
  );
}

Object.assign(window, { LeadForm, Agenda });
