687 lines
41 KiB
HTML
687 lines
41 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr"><head>
|
|
<meta name="description" content="Workspace - WEVAL Consulting SaaS Platform. Cloud, AI, Digital Marketing.">
|
|
<link rel="icon" href="/favicon.ico" type="image/x-icon">
|
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
|
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
<title>WEVAL — Workspace</title>
|
|
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
<style>
|
|
:root{--bg:#ffffff;--sb:#f8fafc;--border:#e2e8f0;--hover:#f1f5f9;--text:#334155;--dim:#94a3b8;--white:#1e293b;--accent:#3b82f6;--green:#22c55e;--orange:#f59e0b;--red:#ef4444;--purple:#8b5cf6;--r:8px}
|
|
*{margin:0;padding:0;box-sizing:border-box}
|
|
body{font-family:'DM Sans',system-ui,sans-serif;background:var(--bg);color:var(--text);height:100vh;overflow:hidden;font-size:14px;-webkit-font-smoothing:antialiased}
|
|
a{color:var(--accent);text-decoration:none}
|
|
button{font-family:inherit;cursor:pointer;border:none}
|
|
input{font-family:inherit;background:var(--bg);border:1px solid var(--border);color:var(--white);border-radius:var(--r);padding:10px 14px;font-size:13px;outline:none;width:100%}
|
|
input:focus{border-color:var(--accent)}
|
|
|
|
/* LOGIN */
|
|
#login{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:100}
|
|
.login-box{background:#fff;border:1px solid var(--border);border-radius:16px;padding:40px;width:400px;box-shadow:0 4px 24px rgba(0,0,0,.08)}
|
|
.login-box h1{font-size:20px;font-weight:700;color:var(--white);text-align:center;margin-bottom:20px}
|
|
.login-box .field{margin-bottom:14px}
|
|
.login-box label{display:block;font-size:11px;color:var(--dim);margin-bottom:5px;text-transform:uppercase;letter-spacing:.05em}
|
|
.login-btn{width:100%;padding:11px;background:var(--accent);color:#fff;border-radius:var(--r);font-size:14px;font-weight:600;margin-top:8px}
|
|
.login-btn:hover{opacity:.9}
|
|
.login-alt{text-align:center;color:var(--dim);font-size:12px;margin-top:16px;cursor:pointer}
|
|
.login-alt:hover{color:var(--accent)}
|
|
.toast{position:fixed;bottom:20px;right:20px;background:var(--sb);color:var(--white);padding:10px 18px;border-radius:var(--r);font-size:13px;border:1px solid var(--border);display:none;z-index:200}
|
|
|
|
/* LAYOUT */
|
|
#app{display:none;height:100vh;width:100vw}
|
|
.layout{display:flex;height:100%}
|
|
.sidebar{width:200px;background:var(--sb);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}
|
|
.sb-head{padding:14px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px}
|
|
.sb-head b{font-size:15px;font-weight:700;color:var(--white)}
|
|
.sb-head small{font-size:10px;color:var(--dim);margin-left:auto}
|
|
.sb-nav{flex:1;overflow-y:auto;padding:6px}
|
|
.sb-nav::-webkit-scrollbar{width:3px}.sb-nav::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}
|
|
.sb-group{padding:10px 10px 4px;font-size:10px;font-weight:700;color:var(--dim);text-transform:uppercase;letter-spacing:.06em}
|
|
.sb-link{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:6px;cursor:pointer;font-size:13px;color:var(--dim);font-weight:500;transition:all .1s}
|
|
.sb-link:hover{background:var(--hover);color:var(--text)}
|
|
.sb-link.on{background:rgba(59,130,246,.1);color:var(--accent)}
|
|
.sb-link .d{width:5px;height:5px;border-radius:50%;flex-shrink:0}
|
|
.sb-user{padding:10px 14px;border-top:1px solid var(--border);font-size:12px}
|
|
.sb-user b{color:var(--white);display:block}
|
|
.sb-user span{color:var(--dim);font-size:10px}
|
|
|
|
/* MAIN */
|
|
.main{flex:1;display:flex;flex-direction:column;overflow:hidden}
|
|
.topbar{height:46px;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;gap:12px;background:var(--sb);flex-shrink:0}
|
|
.topbar-title{font-size:14px;font-weight:600;color:var(--white);flex:1}
|
|
.topbar-key{font-family:'JetBrains Mono';font-size:10px;color:var(--dim);background:var(--bg);padding:4px 10px;border-radius:6px;cursor:pointer;border:1px solid var(--border)}
|
|
.topbar-new{font-size:11px;color:var(--accent);cursor:pointer}
|
|
|
|
/* CONTENT */
|
|
.content{flex:1;position:relative;overflow:hidden}
|
|
#homeView{padding:28px;overflow-y:auto;height:100%}
|
|
#frameView{width:100%;height:100%;border:0;display:none}
|
|
|
|
/* HOME */
|
|
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:24px}
|
|
.stat{background:var(--sb);border:1px solid var(--border);border-radius:var(--r);padding:16px}
|
|
.stat b{font-family:'JetBrains Mono';font-size:22px;font-weight:700;color:var(--white);display:block}
|
|
.stat small{font-size:11px;color:var(--dim)}
|
|
.tools{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:6px}
|
|
.tool{background:var(--sb);border:1px solid var(--border);border-radius:var(--r);padding:8px;cursor:pointer;transition:all .15s;text-align:center}
|
|
.tool:hover{border-color:rgba(59,130,246,.3);transform:translateY(-1px)}
|
|
|
|
.tool h3{font-size:13px;font-weight:600;color:var(--white);margin-bottom:3px}
|
|
.tool p{font-size:11px;color:var(--dim);line-height:1.4}
|
|
.tool-ico{width:48px;height:48px;display:flex;align-items:center;justify-content:center;margin:0 auto 4px}
|
|
.tool-ico img{max-width:44px;max-height:44px;object-fit:contain}
|
|
.tool-ico{position:relative}
|
|
.ia-badge{position:absolute;top:-2px;right:-2px;background:#EF4444;color:#fff;font-size:9px;font-weight:700;padding:1px 4px;border-radius:4px;z-index:1}
|
|
.tool h3{font-size:.78rem!important;margin:0 0 2px}.tool p{font-size:.65rem!important}
|
|
|
|
/* Collapsible sidebar groups */
|
|
.sb-group{padding:10px 10px 4px;font-size:10px;font-weight:700;color:var(--dim);text-transform:uppercase;letter-spacing:.06em;cursor:pointer;display:flex;align-items:center;justify-content:space-between;user-select:none;border-radius:4px;transition:background .15s}
|
|
.sb-group:hover{background:var(--hover);color:var(--text)}
|
|
.sb-group .arrow{font-size:8px;transition:transform .2s}
|
|
.sb-group.open .arrow{transform:rotate(90deg)}
|
|
.sb-items{max-height:0;overflow:hidden;transition:max-height .25s ease}
|
|
.sb-items.open{max-height:600px}
|
|
|
|
/* Free/Premium badges */
|
|
.tool-badge{position:absolute;top:4px;right:4px;font-size:8px;font-weight:700;padding:2px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.03em;z-index:2}
|
|
.tool-badge.free{background:rgba(34,197,94,.15);color:#22c55e;border:1px solid rgba(34,197,94,.25)}
|
|
.tool-badge.pro{background:rgba(139,92,246,.15);color:#8b5cf6;border:1px solid rgba(139,92,246,.25)}
|
|
/* Favorite star */
|
|
.tool-fav{position:absolute;top:4px;left:4px;font-size:14px;cursor:pointer;opacity:.3;transition:all .15s;z-index:2;background:none;border:none;padding:2px}
|
|
.tool-fav:hover,.tool-fav.on{opacity:1;transform:scale(1.2)}
|
|
.tool-fav.on{color:#f59e0b}
|
|
.tool{position:relative}
|
|
/* Tooltip */
|
|
.tool-tip{display:none;position:absolute;bottom:100%;left:50%;transform:translateX(-50%);background:#1e293b;color:#e2e8f0;padding:6px 10px;border-radius:6px;font-size:10px;white-space:nowrap;z-index:100;pointer-events:none;box-shadow:0 4px 12px rgba(0,0,0,.3)}
|
|
.tool:hover .tool-tip{display:block}
|
|
/* Recent section */
|
|
.recent-bar{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap;align-items:center}
|
|
.recent-bar .label{font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-right:4px}
|
|
.recent-chip{font-size:11px;padding:4px 10px;background:var(--sb);border:1px solid var(--border);border-radius:6px;cursor:pointer;color:var(--text);transition:all .15s}
|
|
.recent-chip:hover{border-color:var(--accent);color:var(--accent)}
|
|
/* Ctrl+K hint */
|
|
.search-hint{font-size:10px;color:var(--dim);position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;background:var(--bg);padding:2px 6px;border-radius:4px;border:1px solid var(--border)}
|
|
/* Mobile responsive */
|
|
@media(max-width:768px){
|
|
.layout{flex-direction:column!important}
|
|
.sidebar{width:100%!important;height:auto!important;max-height:50vh;border-right:none!important;border-bottom:1px solid var(--border)}
|
|
.sb-nav{max-height:200px}
|
|
.tools{grid-template-columns:repeat(auto-fill,minmax(90px,1fr))!important;gap:4px!important}
|
|
.tool{padding:6px!important}
|
|
.tool-ico{width:36px!important;height:36px!important}
|
|
.tool-ico img{max-width:32px!important;max-height:32px!important}
|
|
.tool h3{font-size:.7rem!important}
|
|
.tool p{font-size:.55rem!important}
|
|
.stats{grid-template-columns:repeat(2,1fr)!important}
|
|
.topbar{padding:0 12px!important}
|
|
#homeView{padding:16px!important}
|
|
.recent-bar{display:none!important}
|
|
}
|
|
@media(max-width:480px){
|
|
.tools{grid-template-columns:repeat(3,1fr)!important}
|
|
.sidebar{max-height:40vh}
|
|
}
|
|
|
|
.in-iframe nav{display:none!important}.in-iframe .hero{padding-top:3rem!important;min-height:auto!important}.in-iframe footer{display:none!important}.in-iframe .cta{display:none!important}.in-iframe .wv-links{display:none!important}#login{display:none!important}input,select,textarea{background:#0b0d14!important;color:#e2e8f0!important;border:1px solid #1e293b!important;border-radius:8px!important}input::placeholder{color:#475569!important}</style>
|
|
<link rel="alternate" hreflang="fr" href="https://weval-consulting.com/products/workspace.html">
|
|
<link rel="alternate" hreflang="x-default" href="https://weval-consulting.com/products/workspace.html">
|
|
<script>if(window!==window.top)document.documentElement.classList.add("in-iframe")</script>
|
|
<meta property="og:title" content="WEVAL — Workspace">
|
|
<meta property="og:url" content="https://weval-consulting.com/products/workspace.html">
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:site_name" content="WEVAL Consulting">
|
|
<meta property="og:image" content="https://weval-consulting.com/assets/logo-weval-png-DChrMGao.png">
|
|
<link rel="canonical" href="https://weval-consulting.com/products/workspace.html">
|
|
</head>
|
|
<body>
|
|
|
|
<!-- LOGIN -->
|
|
<div id="login">
|
|
<div class="login-box">
|
|
<h1>WEVAL Workspace</h1>
|
|
<div id="loginForm">
|
|
<div class="field"><label>Marketing</label><input type="email" id="lEmail" placeholder="you@company.com"></div>
|
|
<div class="field"><label>Cle API</label><input id="lKey" placeholder="wv_..."></div>
|
|
<button class="login-btn" id="loginBtn" onclick="doLogin()">Se connecter</button>
|
|
<div class="login-alt" onclick="showReg()">Créer un compte</div>
|
|
</div>
|
|
<div id="regForm" style="display:none">
|
|
<div class="field"><label>Nom</label><input id="rName" placeholder="Nom complet"></div>
|
|
<div class="field"><label>Marketing</label><input type="email" id="rEmail" placeholder="you@company.com"></div>
|
|
<div class="field"><label>Entreprise</label><input id="rCompany" placeholder="Entreprise"></div>
|
|
<button class="login-btn" onclick="doRegister()">Créer un compte gratuit</button>
|
|
<div class="login-alt" onclick="showLogin()">Déjà un compte</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- APP -->
|
|
<div id="app">
|
|
<div class="layout">
|
|
<div class="sidebar">
|
|
<div class="sb-head"><b>WEVAL</b><small>workspace</small></div>
|
|
<div style="padding:6px 8px"><input id="sbSearch" placeholder="Filtrer..." oninput="filterSidebar()" style="width:100%;padding:6px 10px;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:11px;outline:none"></div>
|
|
<div class="sb-nav" id="nav"></div>
|
|
<div class="sb-user"><b id="uName">—</b><span id="uTier">Free plan</span></div>
|
|
</div>
|
|
<div class="main">
|
|
<div class="topbar">
|
|
<div class="topbar-title" id="pageTitle">Dashboard</div>
|
|
<div class="topbar-new" id="newTab" style="display:none" onclick="window.open(currentUrl,'_blank')">↗ Nouvel onglet</div>
|
|
<div class="topbar-key" id="topKey" onclick="navigator.clipboard.writeText(KEY);toast('Cle API copiee !')"></div>
|
|
</div>
|
|
<div class="content">
|
|
<div id="homeView"></div>
|
|
<iframe id="frameView" sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-top-navigation allow-top-navigation-by-user-activation" referrerpolicy="strict-origin-when-cross-origin"></iframe>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toast" id="toast"></div>
|
|
|
|
<script>
|
|
var KEY='',U={},currentUrl='',currentPage='home';
|
|
var AUTH='/api/products/auth.php';
|
|
var $=function(id){return document.getElementById(id)};
|
|
var v=function(id){return $(id)?$(id).value.trim():''};
|
|
|
|
// MODULES CONFIG — slug: [title, url, color, group]
|
|
var MODULES = {
|
|
svc:["Consulting","/products/services.html","var(--dim)","Conseil & Services","svc"],
|
|
consultingpkg:["Consulting Pro","/products/consulting.html","var(--accent)","Conseil & Services","consultingpkg"],
|
|
academy:["Academy","/products/academy.html","var(--dim)","Conseil & Services","academy"],
|
|
weviaagency:["WEVIA Agency","/products/wevia-agency.html","var(--purple)","Conseil & Services","weviaagency"],
|
|
wevalcrm:["Weval CRM","/products/wevalcrm.html","var(--accent)","Conseil & Services","wevalcrm"],
|
|
cloudcost:["CloudCost","/products/cloudcost.html","var(--green)","Conseil & Services","cloudcost"],
|
|
pa:["ProposalAI","/products/proposalai.html","var(--purple)","IA & Productivite","pa"],
|
|
bp:["BlueprintAI","/products/blueprintai.html","var(--purple)","IA & Productivite","bp"],
|
|
canvasai:["CanvasAI","/products/canvasai.html","var(--purple)","IA & Productivite","canvasai"],
|
|
copyai:["CopyAI","/products/copyai.html","var(--purple)","IA & Productivite","copyai"],
|
|
df:["DevForge AI","/products/devforge.html","var(--accent)","IA & Productivite","df"],
|
|
translate:["TranslateAI","/products/translateai.html","var(--green)","IA & Productivite","translate"],
|
|
meeting:["MeetingAI","/products/meetingai.html","var(--red)","IA & Productivite","meeting"],
|
|
ppt:["PresentationAI","/products/presentationai.html","var(--purple)","IA & Productivite","ppt"],
|
|
contracts:["ContractAI","/products/contractai.html","var(--purple)","IA & Productivite","contracts"],
|
|
bizplan:["Business Plan","/products/bizplan.html","var(--orange)","IA & Productivite","bizplan"],
|
|
esign:["eSignature","/products/esignature.html","var(--orange)","IA & Productivite","esign"],
|
|
leansixsigma:["Lean Six Sigma","/products/leansixsigma.html","var(--green)","IA & Productivite","leansixsigma"],
|
|
audit:["Audit & Compliance","/products/auditai.html","var(--red)","IA & Productivite","audit"],
|
|
dashboardai:["DashboardAI","/products/dashboardai.html","var(--accent)","IA & Productivite","dashboardai"],
|
|
cf:["Content Factory","/products/content-factory.html","var(--orange)","IA & Productivite","cf"],
|
|
crf:["Creative Factory","/products/creativefactory.html","var(--orange)","IA & Productivite","crf"],
|
|
iaarabe:["IA Arabe FR","/products/ia-arabe.html","var(--purple)","IA & Productivite","iaarabe"],
|
|
mind:["Wedroid","/products/wevalmind.html","var(--purple)","IA & Productivite","mind"],
|
|
wv:["Wevads Platform","/products/wevads.html","var(--red)","Marketing Digital","wv"],
|
|
wevadsia:["Wevads IA","/products/wevads-ia.html","var(--red)","Marketing Digital","wevadsia"],
|
|
da:["DeliverAds","/products/deliverads.html","var(--accent)","Marketing Digital","da"],
|
|
mailstream:["MailStream","/products/mailstream.html","var(--accent)","Marketing Digital","mailstream"],
|
|
mw:["MailWarm","/products/mailwarm.html","var(--orange)","Marketing Digital","mw"],
|
|
mailforge:["MailForge","/products/mailforge.html","var(--orange)","Marketing Digital","mailforge"],
|
|
oa:["OutreachAI","/products/outreachai.html","var(--orange)","Marketing Digital","oa"],
|
|
smsforge:["SMSForge","/products/smsforge.html","var(--orange)","Marketing Digital","smsforge"],
|
|
adscontrol:["AdsControl","/products/adscontrol.html","var(--red)","Marketing Digital","adscontrol"],
|
|
reputationai:["ReputationAI","/products/reputationai.html","var(--orange)","Marketing Digital","reputationai"],
|
|
newsletter:["NewsletterInsight","/products/newsletterinsight.html","var(--orange)","Marketing Digital","newsletter"],
|
|
aisdr:["AI SDR Agent","/products/ai-sdr.html","var(--orange)","Marketing Digital","aisdr"],
|
|
aff:["Partner Program","/products/affiliates.html","var(--purple)","Marketing Digital","aff"],
|
|
mr:["MedReach","/products/medreach.html","var(--green)","Santé & Pharma","mr"],
|
|
medreachapi:["MedReach API","/products/medreach-api.html","var(--green)","Santé & Pharma","medreachapi"],
|
|
et:["MedReach HCP","/products/medreachhcp.html","var(--green)","Santé & Pharma","et"],
|
|
healthcarecrm:["Healthcare CRM","/products/healthcare-crm.html","var(--green)","Santé & Pharma","healthcarecrm"],
|
|
lf:["LeadForge","/products/leadforge.html","var(--orange)","Data & Intelligence","lf"],
|
|
dataharvest:["DataInsight","/products/dataharvest.html","var(--green)","Data & Intelligence","dataharvest"],
|
|
scout:["Scout Intelligence","/products/scoutai.html","var(--accent)","Data & Intelligence","scout"],
|
|
yt:["YouTube Factory","/products/youtubefactory.html","var(--red)","Data & Intelligence","yt"],
|
|
gpu:["Wevia Inference","/products/gpu-inference.html","var(--purple)","Cloud & Sécurité","gpu"],
|
|
sentinel:["Sentinel","/products/sentinel.html","var(--accent)","Cloud & Sécurité","sentinel"],
|
|
ds:["DeliverScore","/products/deliverscore.html","var(--green)","Cloud & Sécurité","ds"],
|
|
inboxtest:["InboxTest","/products/inboxtest.html","var(--accent)","Cloud & Sécurité","inboxtest"],
|
|
emailverify:["EmailVerify","/products/emailverify.html","var(--green)","Cloud & Sécurité","emailverify"],
|
|
ispmonitor:["Network Monitor","/products/ispmonitor.html","var(--purple)","Cloud & Sécurité","ispmonitor"],
|
|
networkguard:["NetworkGuard","/products/networkguard.html","var(--red)","Cloud & Sécurité","networkguard"],
|
|
cloudbridge:["CloudBridge","/products/cloud-providers.html","var(--accent)","Cloud & Sécurité","cloudbridge"],
|
|
we:["Wevia Enterprise","/products/wevia-enterprise.html","var(--purple)","Enterprise","we"],
|
|
arsenal:["Wevanalytics","/products/arsenal.html","var(--red)","Enterprise","arsenal"],
|
|
emailplatform:["Digital Platform","/products/email-platform.html","var(--red)","Enterprise","emailplatform"],
|
|
sf:["StoreForge","/products/storeforge.html","var(--orange)","Enterprise","sf"],
|
|
storeai:["StoreAI","/products/storeai.html","var(--orange)","Enterprise","storeai"],
|
|
fb:["FormBuilder","/products/formbuilder.html","var(--orange)","Enterprise","fb"],
|
|
wl:["Wevia WL","/products/wevia-whitelabel.html","var(--purple)","Enterprise","wl"],
|
|
emailwl:["Email WL","/products/email-whitelabel.html","var(--red)","Enterprise","emailwl"],
|
|
};
|
|
|
|
|
|
|
|
var TIERS={
|
|
svc:'free',academy:'free',mailstream:'free',gpu:'pro',cf:'pro',pa:'free',bp:'free',
|
|
arsenal:'pro',wv:'pro',wevadsia:'pro',da:'pro',we:'pro',
|
|
ds:'free',sentinel:'free',mr:'free',lf:'pro',
|
|
mw:'free',oa:'pro',aff:'free',sf:'pro',wl:'pro',fb:'free',
|
|
df:'free',mind:'free',crf:'free',scout:'free',yt:'free',
|
|
ppt:'free',translate:'free',bizplan:'free',contracts:'free',meeting:'free',
|
|
esign:'free',leansixsigma:'free',audit:'free',et:'pro',
|
|
mailforge:'pro',cloudbridge:'pro',emailverify:'free',inboxtest:'free',
|
|
ispmonitor:'free',newsletter:'free',cloudcost:'free',
|
|
adscontrol:'pro',networkguard:'free',canvasai:'free',copyai:'free',
|
|
dashboardai:'free',dataharvest:'pro',reputationai:'free',
|
|
smsforge:'pro',storeai:'free',wevalcrm:'free',
|
|
emailplatform:'pro',medreachapi:'pro',weviaagency:'pro',healthcarecrm:'free',iaarabe:'pro',aisdr:'pro',emailwl:'pro',consultingpkg:'free'
|
|
};
|
|
|
|
function toast(m){var t=$('toast');t.textContent=m;t.style.display='block';setTimeout(function(){t.style.display='none'},3000)}
|
|
function showReg(){$('loginForm').style.display='none';$('regForm').style.display=''}
|
|
function showLogin(){$('regForm').style.display='none';$('loginForm').style.display=''}
|
|
|
|
// BUILD SIDEBAR
|
|
function buildSidebar(){
|
|
var nav=$('nav');
|
|
var groups={};var gOrder=[];
|
|
for(var k in MODULES){
|
|
var g=MODULES[k][3];
|
|
if(!groups[g]){groups[g]=[];gOrder.push(g)}
|
|
groups[g].push(k);
|
|
}
|
|
var html='<div class="sb-link on" onclick="go(\'home\')"><div class="d" style="background:var(--accent)"></div>Dashboard</div>';
|
|
for(var gi=0;gi<gOrder.length;gi++){
|
|
var g=gOrder[gi];
|
|
html+='<div class="sb-group open" onclick="toggleGroup(this)"><span>'+g+'</span><span class="arrow">▶</span></div>';
|
|
html+='<div class="sb-items open">';
|
|
for(var i=0;i<groups[g].length;i++){
|
|
var k=groups[g][i];
|
|
var m=MODULES[k];
|
|
html+='<div class="sb-link" data-id="'+k+'" onclick="go(\''+k+'\')"><div class="d" style="background:'+m[2]+'"></div>'+m[0]+'</div>';
|
|
}
|
|
html+='</div>';
|
|
}
|
|
nav.innerHTML=html;
|
|
}
|
|
function toggleGroup(el){
|
|
el.classList.toggle('open');
|
|
var items=el.nextElementSibling;
|
|
if(items)items.classList.toggle('open');
|
|
}
|
|
|
|
// NAVIGATE
|
|
function go(page){
|
|
if(!KEY&&page!=='home'){toast('Connectez-vous');return}
|
|
currentPage=page;
|
|
|
|
// Sidebar active
|
|
document.querySelectorAll('.sb-link').forEach(function(l){l.classList.remove('on')});
|
|
var active=document.querySelector('.sb-link[data-id="'+page+'"]');
|
|
if(active)active.classList.add('on');
|
|
if(page==='home')document.querySelector('.sb-link[onclick*="home"]').classList.add('on');
|
|
|
|
if(page==='home'){
|
|
$('homeView').style.display='';trackRecent(id);
|
|
$('frameView').style.display='none';
|
|
$('pageTitle').textContent='Dashboard';
|
|
$('newTab').style.display='none';
|
|
return;
|
|
}
|
|
|
|
var mod=MODULES[page];
|
|
if(!mod){toast('Module inconnu');return}
|
|
|
|
$('pageTitle').textContent=mod[0];
|
|
$('homeView').style.display='none';
|
|
$('frameView').style.display='block';
|
|
$('newTab').style.display='';
|
|
currentUrl=mod[1];
|
|
|
|
// SET IFRAME SRC — simple, direct, no conditions
|
|
$('frameView').src=mod[1]+(mod[1].includes('?')?'&':'?')+'_t='+Date.now();
|
|
|
|
// Dark-mode injection for product iframes
|
|
$('frameView').addEventListener('load', function(){
|
|
try {
|
|
var doc = this.contentDocument || this.contentWindow.document;
|
|
if (!doc) return;
|
|
var s = doc.createElement('style');
|
|
s.textContent = `
|
|
.in-iframe { background: #0b0d14 !important; color: #e2e8f0 !important; }
|
|
.in-iframe body { background: #0b0d14 !important; color: #e2e8f0 !important; }
|
|
.in-iframe section { background: transparent !important; }
|
|
.in-iframe .hero { background: transparent !important; }
|
|
.in-iframe h1, .in-iframe h2, .in-iframe h3 { color: #f1f5f9 !important; }
|
|
.in-iframe p, .in-iframe li, .in-iframe span { color: #94a3b8 !important; }
|
|
.in-iframe b, .in-iframe strong { color: #e2e8f0 !important; }
|
|
.in-iframe em { color: #d4a843 !important; }
|
|
.in-iframe .badge { background: rgba(212,168,67,.1) !important; color: #d4a843 !important; border: 1px solid rgba(212,168,67,.2) !important; }
|
|
.in-iframe input, .in-iframe textarea, .in-iframe select { background: #111827 !important; color: #e2e8f0 !important; border-color: #1e293b !important; }
|
|
.in-iframe .plan-card, .in-iframe .pricing-card, .in-iframe .tier-card, .in-iframe [class*="plan"], .in-iframe [class*="tier"], .in-iframe [class*="pricing"] {
|
|
background: linear-gradient(135deg, #111827, #0f172a) !important;
|
|
border: 1px solid #1e293b !important;
|
|
color: #e2e8f0 !important;
|
|
border-radius: 16px !important;
|
|
}
|
|
.in-iframe .feat, .in-iframe .feature, .in-iframe [class*="feat"] {
|
|
background: linear-gradient(135deg, #111827, #0f172a) !important;
|
|
border: 1px solid #1e293b !important;
|
|
border-radius: 12px !important;
|
|
}
|
|
.in-iframe .btn-p, .in-iframe .cta-btn, .in-iframe [class*="btn-p"] {
|
|
background: linear-gradient(135deg, #d4a843, #b8942e) !important;
|
|
color: #0a0d13 !important;
|
|
border: none !important;
|
|
border-radius: 12px !important;
|
|
font-weight: 700 !important;
|
|
}
|
|
.in-iframe .btn-o, .in-iframe [class*="btn-o"], .in-iframe [class*="btn-n"] {
|
|
background: transparent !important;
|
|
color: #94a3b8 !important;
|
|
border: 1px solid #334155 !important;
|
|
border-radius: 12px !important;
|
|
}
|
|
.in-iframe .stat-v, .in-iframe .stat b { color: #d4a843 !important; }
|
|
.in-iframe .stat-l, .in-iframe .stat small { color: #64748b !important; }
|
|
.in-iframe .stat { background: rgba(255,255,255,.03) !important; border: 1px solid #1e293b !important; border-radius: 12px !important; }
|
|
.in-iframe a { color: #60a5fa !important; }
|
|
.in-iframe code, .in-iframe pre { background: #1e293b !important; color: #e2e8f0 !important; }
|
|
.in-iframe hr { border-color: #1e293b !important; }
|
|
.in-iframe table { border-color: #1e293b !important; }
|
|
.in-iframe th { background: #111827 !important; color: #94a3b8 !important; border-color: #1e293b !important; }
|
|
.in-iframe td { border-color: #1e293b !important; color: #e2e8f0 !important; }
|
|
.in-iframe tr:hover { background: rgba(129,140,248,.05) !important; }
|
|
.in-iframe ::placeholder { color: #475569 !important; }
|
|
.in-iframe .sub { color: #64748b !important; }
|
|
`;
|
|
doc.head.appendChild(s);
|
|
} catch(e) {}
|
|
});
|
|
|
|
}
|
|
|
|
// HOME DASHBOARD
|
|
function renderHome(){
|
|
$('homeView').innerHTML=
|
|
'<div class="stats">'+
|
|
'<div class="stat"><b>62</b><small>Produits</small></div>'+
|
|
'<div class="stat"><b>8</b><small>Suites</small></div>'+
|
|
'<div class="stat"><b style="color:var(--green)">Live</b><small>API Status</small></div>'+
|
|
'<div class="stat"><b id="hTier">Free</b><small>Plan</small></div>'+
|
|
'</div>'+
|
|
'<div style="margin-bottom:16px;display:flex;gap:10px;align-items:center">'+
|
|
'<div style="flex:1;position:relative"><input type="text" id="toolSearch" placeholder="Rechercher un produit..." oninput="filterTools()" style="width:100%;padding:10px 16px;background:var(--sb);border:1px solid var(--border);border-radius:8px;color:var(--white);font-size:13px;outline:none"><span class="search-hint">Ctrl+K</span></div>'+
|
|
'<span style="font-size:11px;color:var(--dim)" id="toolCount">62 produits</span>'+
|
|
'</div>'+
|
|
'<div class="tools" id="toolGrid"></div>';
|
|
|
|
var ICONS={
|
|
'arsenal':'/assets/logo-wevanalytics.svg',
|
|
'wv':'/assets/logo-wevads-Crayl4yz.png',
|
|
'wevadsia':'/assets/logo-wevads-Crayl4yz.png',
|
|
'da':'/assets/logo-deliverads.svg',
|
|
'we':'/assets/logo-wevia-official.svg',
|
|
'ds':'/assets/logo-deliverscore.svg',
|
|
'sentinel':'/assets/logo-sentinel.svg',
|
|
'mr':'/assets/logo-medreach.svg',
|
|
'lf':'/assets/logo-leadforge.svg',
|
|
'gpu':'/assets/logo-wevia-official.svg',
|
|
'cf':'/assets/logo-content-factory.svg',
|
|
'pa':'/assets/logo-proposalai.svg',
|
|
'bp':'/assets/logo-blueprintai.svg',
|
|
'mw':'/assets/logo-mailwarm.svg',
|
|
'oa':'/assets/logo-outreachai.svg',
|
|
'aff':'/assets/logo-affiliates.svg',
|
|
'sf':'/assets/logo-storeforge.svg',
|
|
'wl':'/assets/logo-wevia-official.svg',
|
|
'fb':'/assets/logo-formbuilder.svg',
|
|
'df':'/assets/logo-devforge.svg',
|
|
'mind':'/assets/logo-weval-mind.svg',
|
|
'crf':'/assets/logo-creative-factory.svg',
|
|
'scout':'/assets/logo-scout.svg',
|
|
'yt':'/assets/logo-youtube-factory.svg',
|
|
'ppt':'/assets/logo-presentationai.svg',
|
|
'translate':'/assets/logo-translateai.svg',
|
|
'bizplan':'/assets/logo-bizplan.svg',
|
|
'contracts':'/assets/logo-contractai.svg',
|
|
'meeting':'/assets/logo-meeting-summary.svg',
|
|
'esign':'/assets/logo-esignature.svg',
|
|
'leansixsigma':'/assets/logo-leansixsigma.svg',
|
|
'audit':'/assets/logo-auditcompliance.svg',
|
|
'et':'/assets/logo-medreach.svg',
|
|
'mailforge':'/assets/logo-mailforge.svg',
|
|
'cloudbridge':'/assets/logo-cloudbridge.svg',
|
|
'svc':'/assets/logo-consulting.svg',
|
|
'academy':'/assets/logo-academy.svg',
|
|
'canvas':'/assets/logo-canvasai.svg',
|
|
'dash':'/assets/logo-dashboardai.svg',
|
|
'emailverify':'/assets/logo-emailverify.svg',
|
|
'inboxtest':'/assets/logo-inboxtest.svg',
|
|
'ispmonitor':'/assets/logo-ispmonitor.svg',
|
|
'newsletter':'/assets/logo-newsletter.svg',
|
|
'cloudcost':'/assets/logo-cloudcost.svg',
|
|
'mailstream':'/assets/logo-mailstream.svg',
|
|
'adscontrol':'/assets/logo-adscontrol.svg',
|
|
'networkguard':'/assets/logo-networkguard.svg',
|
|
'canvasai':'/assets/logo-canvasai.svg',
|
|
'copyai':'/assets/logo-copyai.svg',
|
|
'dashboardai':'/assets/logo-dashboardai.svg',
|
|
'dataharvest':'/assets/logo-dataharvest.svg',
|
|
'reputationai':'/assets/logo-reputationai.svg',
|
|
'smsforge':'/assets/logo-smsforge.svg',
|
|
'storeai':'/assets/logo-storeforge.svg',
|
|
'wevalcrm':'/assets/logo-weval-crm.svg',
|
|
'emailplatform':'/assets/logo-deliverads.svg',
|
|
'medreachapi':'/assets/logo-medreach.svg',
|
|
'weviaagency':'/assets/logo-wevia-official.svg',
|
|
'healthcarecrm':'/assets/logo-medreach.svg',
|
|
'iaarabe':'/assets/logo-wevia-official.svg',
|
|
'aisdr':'/assets/logo-outreachai.svg',
|
|
'emailwl':'/assets/logo-mailforge.svg',
|
|
'consultingpkg':'/assets/logo-consulting.svg',
|
|
};
|
|
// Recent products
|
|
var recents=JSON.parse(localStorage.getItem('wv_recent')||'[]');
|
|
var favs=JSON.parse(localStorage.getItem('wv_favs')||'[]');
|
|
var recentHtml='';
|
|
if(recents.length>0||favs.length>0){
|
|
recentHtml='<div class="recent-bar">';
|
|
if(favs.length>0){
|
|
recentHtml+='<span class="label">★ Favoris</span>';
|
|
favs.slice(0,6).forEach(function(k){if(MODULES[k])recentHtml+='<span class="recent-chip" onclick="go(\''+k+'\')">'+MODULES[k][0]+'</span>'});
|
|
}
|
|
if(recents.length>0){
|
|
recentHtml+='<span class="label" style="margin-left:8px">Récents</span>';
|
|
recents.slice(0,5).forEach(function(k){if(MODULES[k])recentHtml+='<span class="recent-chip" onclick="go(\''+k+'\')">'+MODULES[k][0]+'</span>'});
|
|
}
|
|
recentHtml+='</div>';
|
|
}
|
|
// Product grid with badges + favs + tooltips
|
|
var html='';
|
|
for(var k in MODULES){
|
|
var m=MODULES[k];
|
|
var tier=TIERS[k]||'free';
|
|
var isFav=favs.indexOf(k)>-1;
|
|
var desc={'Services':'Consulting & accompagnement','IA':'Intelligence artificielle','Flagships':'Produits phares','Marketing':'Marketing digital','Commerce':'E-commerce','Dev':'Développement','Scanners':'Analyse & scan','Data':'Données','IA Apps':'Applications IA','Email+':'Email avancé'};
|
|
html+='<div class="tool" onclick="go(\''+k+'\')">';
|
|
html+='<span class="tool-badge '+(tier==='pro'?'pro':'free')+'">'+tier+'</span>';
|
|
html+='<button class="tool-fav '+(isFav?'on':'')+'" onclick="event.stopPropagation();toggleFav(\''+k+'\')">'+(isFav?'★':'☆')+'</button>';
|
|
html+='<div class="tool-tip">'+m[0]+' — '+(desc[m[3]]||m[3])+'</div>';
|
|
html+='<div class="tool-ico">'+(k==='wevadsia'?'<span class="ia-badge">IA</span>':'')+'<img src="'+(ICONS[k]||'/assets/logo-weval-ia.svg')+'" alt=""></div>';
|
|
html+='<h3>'+m[0]+'</h3><p>'+m[3]+'</p></div>';
|
|
}
|
|
$('toolGrid').innerHTML=recentHtml+html;
|
|
}
|
|
|
|
// AUTH
|
|
async function doLogin(){
|
|
var btn=document.getElementById('loginBtn');if(btn){btn.textContent='Connexion...';btn.disabled=true}
|
|
var e=v('lEmail'),k=v('lKey');
|
|
if(!e&&!k){toast('Email ou cle requis');return}
|
|
try{
|
|
var r;
|
|
if(k){r=await(await fetch(AUTH+'?action=dashboard&key='+k)).json();if(r.error){toast(r.error);return}if(!r.api_key){toast('Cle invalide');return}KEY=r.api_key;U=r.user||{};enter()}
|
|
else{r=await(await fetch(AUTH,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name:'User',email:e,company:'N/A',product:'all'})})).json();if(r.error){toast(r.error);return}KEY=r.api_key;U={name:'User',email:e,tier:r.tier||'free'};enter()}
|
|
}catch(ex){toast('Erreur: '+ex.message)}
|
|
finally{var btn=document.getElementById('loginBtn');if(btn){btn.textContent='Se connecter';btn.disabled=false}}
|
|
}
|
|
async function doRegister(){
|
|
var n=v('rName'),e=v('rEmail'),c=v('rCompany');
|
|
if(!n||!e||!c){toast('Tous les champs requis');return}
|
|
try{
|
|
var r=await(await fetch(AUTH,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name:n,email:e,company:c,product:'all'})})).json();
|
|
if(r.error){toast(r.error);return}KEY=r.api_key;U={name:n,email:e,tier:r.tier||'free'};enter()
|
|
}catch(ex){toast('Erreur: '+ex.message)}
|
|
}
|
|
function enter(){
|
|
try{localStorage.setItem('wk',KEY);localStorage.setItem('wu',JSON.stringify(U))}catch(e){}
|
|
$('login').style.display='none';
|
|
$('app').style.display='block';
|
|
$('uName').textContent=U.name||U.email||'User';
|
|
$('uTier').textContent=(U.tier||'free')+' plan';
|
|
$('topKey').textContent=(KEY||'').substring(0,16)+'...';
|
|
if($('hTier'))$('hTier').textContent=U.tier||'Free';
|
|
buildSidebar();
|
|
renderHome();
|
|
// Welcome toast on first visit
|
|
if(!localStorage.getItem('wv_welcomed')){
|
|
toast('Bienvenue ! Explorez nos 62 produits SaaS.');
|
|
localStorage.setItem('wv_welcomed','1');
|
|
}
|
|
}
|
|
|
|
// Search/filter products
|
|
function filterTools(){
|
|
var q=(document.getElementById('toolSearch')||{}).value||'';
|
|
q=q.toLowerCase();
|
|
var cards=document.querySelectorAll('.tool');
|
|
var visible=0;
|
|
cards.forEach(function(card){
|
|
var text=(card.textContent||'').toLowerCase();
|
|
if(!q||text.indexOf(q)>-1){card.style.display='';visible++}
|
|
else{card.style.display='none'}
|
|
});
|
|
var counter=document.getElementById('toolCount');
|
|
if(counter)counter.textContent=visible+' produit'+(visible>1?'s':'');
|
|
}
|
|
|
|
// ENTER ON LOGIN
|
|
document.addEventListener('keypress',function(e){if(e.key==='Enter'&&$('login').style.display!=='none'){if($('loginForm').style.display!=='none')doLogin();else doRegister()}});
|
|
|
|
// AUTO RESTORE
|
|
try{var sk=localStorage.getItem('wk'),su=localStorage.getItem('wu');if(sk&&su){KEY=sk;U=JSON.parse(su);enter()}}catch(e){}
|
|
|
|
// Sidebar filter
|
|
function filterSidebar(){
|
|
var q=(document.getElementById('sbSearch')||{}).value.toLowerCase();
|
|
document.querySelectorAll('.sb-link').forEach(function(el){
|
|
if(el.dataset.id==='home'||!el.dataset.id)return;
|
|
var text=(el.textContent||'').toLowerCase();
|
|
el.style.display=(!q||text.indexOf(q)>-1)?'':'none';
|
|
});
|
|
// Show parent groups that have visible children
|
|
document.querySelectorAll('.sb-group').forEach(function(g){
|
|
var items=g.nextElementSibling;
|
|
if(items&&items.classList.contains('sb-items')){
|
|
var hasVisible=false;
|
|
items.querySelectorAll('.sb-link').forEach(function(l){if(l.style.display!=='none')hasVisible=true});
|
|
g.style.display=(!q||hasVisible)?'':'none';
|
|
items.style.display=(!q||hasVisible)?'':'none';
|
|
if(q&&hasVisible){items.classList.add('open');g.classList.add('open')}
|
|
}
|
|
});
|
|
}
|
|
|
|
// Toggle favorite
|
|
function toggleFav(k){
|
|
var favs=JSON.parse(localStorage.getItem('wv_favs')||'[]');
|
|
var idx=favs.indexOf(k);
|
|
if(idx>-1)favs.splice(idx,1);else favs.unshift(k);
|
|
localStorage.setItem('wv_favs',JSON.stringify(favs.slice(0,10)));
|
|
renderHome();
|
|
}
|
|
// Track recent
|
|
function trackRecent(k){
|
|
if(k==='home')return;
|
|
var r=JSON.parse(localStorage.getItem('wv_recent')||'[]');
|
|
r=r.filter(function(x){return x!==k});
|
|
r.unshift(k);
|
|
localStorage.setItem('wv_recent',JSON.stringify(r.slice(0,8)));
|
|
}
|
|
// Ctrl+K shortcut
|
|
document.addEventListener('keydown',function(e){
|
|
if((e.ctrlKey||e.metaKey)&&e.key==='k'){
|
|
e.preventDefault();
|
|
if(currentPage!=='home')go('home');
|
|
setTimeout(function(){var s=$('toolSearch');if(s){s.focus();s.select()}},100);
|
|
}
|
|
if(e.key==='Escape'){var s=$('toolSearch');if(s&&document.activeElement===s){s.value='';filterTools();s.blur()}}
|
|
});
|
|
|
|
</script>
|
|
|
|
<!-- Contact Overlay (intercepts /contact-us/ in iframe) -->
|
|
<div id="contactOverlay" style="display:none;position:fixed;top:0;left:var(--sidebar-w,140px);right:0;bottom:0;z-index:500;background:rgba(5,8,18,0.97);overflow-y:auto;padding:3rem 4%">
|
|
<div style="max-width:520px;margin:0 auto">
|
|
<button onclick="closeContactOverlay()" style="float:right;background:none;border:none;color:#64748b;font-size:1.4rem;cursor:pointer;padding:8px">✕</button>
|
|
<div style="display:inline-block;background:rgba(99,102,241,.1);color:#6366f1;padding:6px 18px;border-radius:20px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:1rem">Contact</div>
|
|
<h2 style="font-size:1.8rem;font-weight:800;color:#f1f5f9;margin-bottom:.5rem" id="overlayTitle">Parlons de votre projet</h2>
|
|
<p style="color:#94a3b8;font-size:.9rem;margin-bottom:2rem;line-height:1.6">Remplissez le formulaire ci-dessous. Notre équipe vous recontacte sous 24h.</p>
|
|
<div style="margin-bottom:1rem"><label style="display:block;font-size:.75rem;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px">Nom complet</label><input id="ovName" type="text" placeholder="Votre nom" style="width:100%;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.06);color:#f1f5f9;border-radius:8px;padding:.7rem 1rem;font-size:.88rem;font-family:inherit;outline:none"></div>
|
|
<div style="margin-bottom:1rem"><label style="display:block;font-size:.75rem;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px">Email professionnel</label><input id="ovEmail" type="email" placeholder="vous@entreprise.com" style="width:100%;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.06);color:#f1f5f9;border-radius:8px;padding:.7rem 1rem;font-size:.88rem;font-family:inherit;outline:none"></div>
|
|
<div style="margin-bottom:1rem"><label style="display:block;font-size:.75rem;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px">Entreprise</label><input id="ovCompany" type="text" placeholder="Nom de votre entreprise" style="width:100%;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.06);color:#f1f5f9;border-radius:8px;padding:.7rem 1rem;font-size:.88rem;font-family:inherit;outline:none"></div>
|
|
<div style="margin-bottom:1rem"><label style="display:block;font-size:.75rem;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px">Produit</label><input id="ovProduct" type="text" readonly style="width:100%;background:rgba(99,102,241,.06);border:1px solid rgba(99,102,241,.15);color:#818cf8;border-radius:8px;padding:.7rem 1rem;font-size:.88rem;font-family:inherit;outline:none;font-weight:600"></div>
|
|
<div style="margin-bottom:1rem"><label style="display:block;font-size:.75rem;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px">Message</label><textarea id="ovMsg" placeholder="Décrivez votre besoin..." style="width:100%;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.06);color:#f1f5f9;border-radius:8px;padding:.7rem 1rem;font-size:.88rem;font-family:inherit;outline:none;resize:vertical;min-height:80px"></textarea></div>
|
|
<button id="ovSendBtn" onclick="sendOverlayForm()" style="display:block;width:100%;background:#6366f1;color:#fff;padding:14px;border:none;border-radius:12px;font-weight:700;font-size:.95rem;cursor:pointer;font-family:inherit;margin-top:1.5rem">Envoyer →</button>
|
|
<div id="ovSuccess" style="display:none;background:rgba(0,200,150,.08);border:1px solid rgba(0,200,150,.2);border-radius:12px;padding:1.5rem;text-align:center;margin-top:1rem"><h3 style="color:#00c9a7;font-size:1.2rem;margin-bottom:.5rem">Message envoyé ✓</h3><p style="font-size:.85rem;color:#94a3b8">Notre équipe vous recontactera sous 24h.</p><button onclick="closeContactOverlay()" style="margin-top:1rem;background:none;border:1px solid rgba(255,255,255,.1);color:#94a3b8;padding:8px 20px;border-radius:8px;cursor:pointer;font-family:inherit">← Retour au produit</button></div>
|
|
</div></div>
|
|
<script>
|
|
var _currentProduct='';
|
|
function showContactOverlay(product){
|
|
_currentProduct=product||'';
|
|
document.getElementById('ovProduct').value=_currentProduct;
|
|
document.getElementById('ovSuccess').style.display='none';
|
|
document.getElementById('ovSendBtn').style.display='block';
|
|
document.getElementById('ovName').value='';document.getElementById('ovEmail').value='';document.getElementById('ovCompany').value='';document.getElementById('ovMsg').value='';
|
|
document.getElementById('contactOverlay').style.display='block';
|
|
}
|
|
function closeContactOverlay(){
|
|
document.getElementById('contactOverlay').style.display='none';
|
|
// Restore iframe to last product
|
|
var f=document.getElementById('frameView');
|
|
if(f&&f.dataset.lastSrc&&f.src.indexOf('contact-us')>-1) f.src=f.dataset.lastSrc;
|
|
}
|
|
function sendOverlayForm(){
|
|
var n=document.getElementById('ovName').value.trim(),e=document.getElementById('ovEmail').value.trim();
|
|
if(!n||!e){alert('Veuillez remplir nom et email.');return;}
|
|
var btn=document.getElementById('ovSendBtn');btn.disabled=true;btn.textContent='Envoi...';
|
|
fetch('/api/contact',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name:n,email:e,company:document.getElementById('ovCompany').value.trim(),subject:'demo',message:'[Produit: '+_currentProduct+'] '+document.getElementById('ovMsg').value.trim(),source:'workspace-overlay',ts:new Date().toISOString()})}).then(function(){
|
|
document.getElementById('ovSendBtn').style.display='none';
|
|
document.getElementById('ovSuccess').style.display='block';
|
|
}).catch(function(){
|
|
document.getElementById('ovSendBtn').style.display='none';
|
|
document.getElementById('ovSuccess').style.display='block';
|
|
});
|
|
}
|
|
// Intercept iframe navigation to /contact-us/
|
|
(function(){
|
|
var frame=document.getElementById('frameView');
|
|
if(!frame)return;
|
|
// Save last product URL before navigation
|
|
var origSrc=Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype,'src');
|
|
// Poll approach: watch iframe URL changes
|
|
setInterval(function(){
|
|
try{
|
|
var loc=frame.contentWindow.location.href;
|
|
if(loc.indexOf('/contact-us')>-1){
|
|
// Find current product name from sidebar
|
|
var active=document.querySelector('.s-item.act');
|
|
var prodName=active?active.textContent.trim():'';
|
|
showContactOverlay(prodName);
|
|
// Navigate iframe back
|
|
if(frame.dataset.lastSrc) frame.src=frame.dataset.lastSrc;
|
|
} else if(loc.indexOf('/products/')>-1){
|
|
frame.dataset.lastSrc=loc;
|
|
}
|
|
}catch(e){}
|
|
},500);
|
|
})();
|
|
</script>
|
|
|
|
<script src="/weval-audit-reco.js" defer></script>
|
|
<footer style="padding:1.5rem 4%;max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;border-top:1px solid rgba(255,255,255,.04);font-size:.75rem;color:#7a8ba5"><span>© 2026 WEVAL Consulting</span><a href="/products/" style="color:#10b981;text-decoration:none">Produits</a></footer>
|
|
</body></html>
|