File size: 2,587 Bytes
197ac2a
 
 
 
 
463cf95
197ac2a
 
463cf95
197ac2a
463cf95
197ac2a
463cf95
197ac2a
 
 
 
463cf95
197ac2a
 
463cf95
197ac2a
463cf95
197ac2a
463cf95
197ac2a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import SecaoHeader from "./SecaoHeader.jsx";

const COR = {
  leads_criados: "#16a34a",
  leads_sem_tarefa: "#f59e0b",
  oportunidades_criadas: "#0018FF",
  oportunidades_travadas: "#e11d48",
  oportunidades_ganhas: "#2563eb",
  oportunidades_perdidas: "#e11d48",
  cancelamentos: "#be123c",
  satisfacoes_do_dia: "#16C79A",
  satisfacoes_piores: "#0d9488",
  contratos_modificados: "#0004DD",
};
const ROTULO = {
  leads_criados: "🆕 Leads criados",
  leads_sem_tarefa: "⏳ Leads sem 1ª tarefa",
  oportunidades_criadas: "✨ Oportunidades criadas",
  oportunidades_travadas: "🚧 Oportunidades travadas",
  oportunidades_ganhas: "🏆 Oportunidades ganhas",
  oportunidades_perdidas: "📉 Oportunidades perdidas",
  cancelamentos: "❌ Cancelamentos",
  satisfacoes_do_dia: "😊 Satisfações do dia",
  satisfacoes_piores: "😟 Piores satisfações",
  contratos_modificados: "📄 Contratos modificados",
};

// Renderiza os "Registros do dia" — links diretos para os registros no
// Salesforce, agrupados por categoria. Recebe o objeto `highlights` já
// calculado pelo backend e a lista de chaves a exibir nesta tela.
export default function HighlightsCards({ highlights, chaves }) {
  const h = highlights || {};
  const ks = chaves.filter((k) => (h[k] || []).length);
  if (!ks.length) return null;
  return (
    <div className="card">
      <SecaoHeader icone="🔗" titulo="Registros (links Salesforce)" cor="#6366f1" />
      <div className="dgrid">
        {ks.map((k) => {
          const itens = (h[k] || []).slice(0, 15);
          const cor = COR[k] || "#6366f1";
          return (
            <div className="dcard" key={k}>
              <div className="dh" style={{ background: `linear-gradient(100deg,${cor},${cor}cc)` }}>
                {ROTULO[k] || k}
                <span className="ct">{(h[k] || []).length}</span>
              </div>
              <ul>
                {itens.map((r, i) => {
                  const nome = r.name || r.id || "registro";
                  const info = r.info ? <span className="info"> ({r.info})</span> : null;
                  return (
                    <li key={i}>
                      {r.url ? (
                        <a href={r.url} target="_blank" rel="noreferrer">
                          {nome}
                        </a>
                      ) : (
                        nome
                      )}
                      {info}
                    </li>
                  );
                })}
              </ul>
            </div>
          );
        })}
      </div>
    </div>
  );
}