// ============================================================
// dashmenu1 - Reorganizacao do menu do dash2
// Carregar DEPOIS do geralmtx36:
//
//
// ============================================================
(function () {
'use strict';
const INFO = {
instant: 'Diagnóstico coletivo por link público. Até 500 respondentes, recortes por grupos e relatório automático com IA.',
auto: 'Você responde pelo cliente e traduz a cultura dele para a Matriz em minutos. Sem envolver respondentes.',
individual: 'Assessment individual completo por link nominal. O resultado entra na matriz e no batch escolhido. 100 créditos.'
};
// ── CSS ──
const style = document.createElement('style');
style.textContent = `
.qmenu { position: relative; display: inline-block; }
.qmenu-panel {
display: none; position: absolute; top: calc(100% + 6px); left: 0; z-index: 500;
min-width: 230px; padding: 6px; border-radius: 12px;
background: rgba(20,12,50,0.97); border: 1px solid rgba(255,255,255,0.15);
box-shadow: 0 10px 34px rgba(0,0,0,0.45);
}
.qmenu.open .qmenu-panel { display: block; }
.qmenu-item {
display: flex; align-items: center; gap: 8px;
padding: 9px 10px; border-radius: 8px;
color: rgba(255,255,255,0.85); font-size: 13px; font-weight: 500;
text-decoration: none; cursor: pointer; border: none; background: transparent;
width: 100%; text-align: left; box-sizing: border-box;
}
.qmenu-item:hover { background: rgba(255,255,255,0.08); color: #fff; }
.qmenu-item.gated { opacity: 0.35; pointer-events: none; }
.qmenu-caret { margin-left: 4px; font-size: 9px; opacity: 0.6; }
.qi {
position: relative; display: inline-flex; align-items: center; justify-content: center;
width: 15px; height: 15px; border-radius: 50%; flex-shrink: 0; margin-left: auto;
border: 1px solid rgba(255,255,255,0.35); color: rgba(255,255,255,0.55);
font-size: 10px; font-style: italic; font-family: Georgia, serif; cursor: help;
}
.qi::after {
content: attr(data-tip); display: none; position: absolute; z-index: 600;
left: 50%; transform: translateX(-88%); top: calc(100% + 8px);
width: 220px; padding: 10px 12px; border-radius: 10px;
background: rgba(10,6,30,0.98); border: 1px solid rgba(167,129,243,0.4);
color: rgba(255,255,255,0.85); font-size: 11px; font-style: normal;
font-family: inherit; line-height: 1.5; text-align: left; white-space: normal;
}
.qi:hover::after { display: block; }
`;
document.head.appendChild(style);
function hide(el) { if (el) el.style.display = 'none'; }
function makeMenu(labelHtml) {
const wrap = document.createElement('div');
wrap.className = 'qmenu';
const trigger = document.createElement('button');
trigger.className = 'btn btn-secondary';
trigger.innerHTML = labelHtml + '';
const panel = document.createElement('div');
panel.className = 'qmenu-panel';
trigger.addEventListener('click', (e) => {
e.stopPropagation();
document.querySelectorAll('.qmenu.open').forEach(m => { if (m !== wrap) m.classList.remove('open'); });
wrap.classList.toggle('open');
});
wrap.appendChild(trigger);
wrap.appendChild(panel);
return { wrap, panel };
}
function addItem(panel, { text, href, blank, onClick, info, id }) {
const el = document.createElement(href ? 'a' : 'button');
el.className = 'qmenu-item';
if (id) el.id = id;
if (href) { el.href = href; if (blank) el.target = '_blank'; }
if (onClick) el.addEventListener('click', (e) => { e.preventDefault(); onClick(); closeAll(); });
el.innerHTML = `${text}` + (info ? `i` : '');
// o clique no "i" nao deve navegar
const qi = el.querySelector('.qi');
if (qi) qi.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); });
panel.appendChild(el);
return el;
}
function closeAll() { document.querySelectorAll('.qmenu.open').forEach(m => m.classList.remove('open')); }
document.addEventListener('click', closeAll);
function build() {
const bar = document.querySelector('.action-buttons');
if (!bar) return;
// ── 1) Renomear "Diagnóstico" para "Orçar" (mantendo o svg) ──
const btnOrcar = document.getElementById('btn-novo-diagnostico');
if (btnOrcar) {
[...btnOrcar.childNodes].forEach(n => { if (n.nodeType === 3 && n.textContent.trim()) n.textContent = ' Orçar'; });
if (![...btnOrcar.childNodes].some(n => n.nodeType === 3 && n.textContent.trim())) {
btnOrcar.appendChild(document.createTextNode(' Orçar'));
}
}
// ── 2) Esconder botoes antigos (listeners preservados) ──
hide(document.getElementById('btn-gerar-link'));
hide(document.getElementById('btn-autodiagnostico'));
hide(document.getElementById('btn-gerenciar-batches'));
hide(document.getElementById('btn-certificacao'));
bar.querySelectorAll('a.btn').forEach(a => {
const h = a.getAttribute('href') || '';
if (h.includes('/dash/calculadora') || h.includes('/dash/chalkboard') ||
h.includes('/dash/library') || h.includes('/dash/chat')) hide(a);
});
// ── 3) Dropdown Diagnósticos ──
const diag = makeMenu('Diagnósticos');
addItem(diag.panel, { text: 'Instant Scan', href: '/dash/diagnostico-rapido', info: INFO.instant });
addItem(diag.panel, { text: 'Auto Scan', href: '/dash/autodiagnostico', info: INFO.auto });
addItem(diag.panel, {
text: 'Individual Scan', info: INFO.individual,
onClick: () => { const b = document.getElementById('btn-gerar-link'); if (b) b.click(); }
});
bar.appendChild(diag.wrap);
// ── 4) Dropdown Conteúdo ──
const cont = makeMenu('Conteúdo');
addItem(cont.panel, { text: 'Certificado', href: 'https://qore.me/dash/class/introducao', blank: true });
addItem(cont.panel, { text: 'Library', href: '/dash/library', blank: true });
bar.appendChild(cont.wrap);
// ── 5) Dropdown Ferramentas ──
const ferr = makeMenu('Ferramentas');
const itChalk = addItem(ferr.panel, { text: 'Chalkboard', href: '/dash/chalkboard', blank: true });
const itROI = addItem(ferr.panel, { text: 'Calculadora de ROI', href: '/dash/calculadora', blank: true });
addItem(ferr.panel, {
text: 'Organização de dados',
onClick: () => { const b = document.getElementById('btn-gerenciar-batches'); if (b) b.click(); }
});
bar.appendChild(ferr.wrap);
// ── 6) Copilot Qore ──
const copilot = document.createElement('a');
copilot.className = 'btn btn-secondary';
copilot.href = '/dash/chat';
copilot.target = '_blank';
copilot.textContent = 'Copilot Qore';
bar.appendChild(copilot);
// ── 7) Gate de assinatura nos itens novos (mesma regra do geralmtx) ──
let tries = 0;
const gateTimer = setInterval(() => {
tries++;
if (typeof currentCompany !== 'undefined' && currentCompany) {
clearInterval(gateTimer);
const isSub = ['alpha', 'beta', 'gamma'].includes(currentCompany.partnership_level);
if (!isSub) {
[itChalk, itROI].forEach(el => {
el.classList.add('gated');
el.removeAttribute('href');
el.title = 'Disponível para assinantes Alpha, Beta ou Gamma';
});
}
} else if (tries > 40) { clearInterval(gateTimer); }
}, 400);
}
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', build);
else build();
})();