201 lines
18 KiB
HTML
201 lines
18 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr"><head>
|
|
<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 Products — Inscription</title>
|
|
<meta name="description" content="WEVAL Products — Inscription - Solutions IA souveraines pour entreprises">
|
|
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
|
<style>
|
|
:root{--bg:#05080f;--s:#0c1222;--a:#00c9a7;--a15:rgba(0,201,167,.15);--p:#7c5cfc;--g:#f0c674;--r:#ff6b6b;--bl:#4ea8de;--sv:#7a8ba5;--w:#edf2f7;--b:rgba(0,201,167,.08)}
|
|
*{margin:0;padding:0;box-sizing:border-box}body{font-family:'Outfit',sans-serif;background:var(--bg);color:var(--w);min-height:100vh}
|
|
nav{position:fixed;top:0;width:100%;padding:.8rem 4%;display:flex;justify-content:space-between;align-items:center;z-index:100;backdrop-filter:blur(20px);background:rgba(5,8,15,.85);border-bottom:1px solid var(--b)}.logo{font-weight:800;font-size:1.3rem}.logo span{color:var(--a)}
|
|
.main{max-width:700px;margin:0 auto;padding:6rem 1.5rem 3rem}
|
|
h1{font-size:2.2rem;font-weight:800;letter-spacing:-.03em;margin-bottom:.5rem;text-align:center}
|
|
.sub{text-align:center;color:var(--sv);font-size:.95rem;margin-bottom:2.5rem}
|
|
.tabs{display:flex;gap:0;margin-bottom:2rem;border-radius:10px;overflow:hidden;border:1px solid rgba(255,255,255,.06)}
|
|
.tab{flex:1;padding:.7rem;text-align:center;font-weight:600;font-size:.85rem;cursor:pointer;background:var(--s);transition:all .2s;color:var(--sv)}
|
|
.tab.active{background:var(--a);color:var(--bg)}
|
|
.tab:hover:not(.active){background:rgba(0,201,167,.05);color:var(--a)}
|
|
.panel{display:none}.panel.active{display:block}
|
|
.form-box{background:var(--s);border:1px solid var(--b);border-radius:16px;padding:2rem}
|
|
.fg{margin-bottom:1.2rem}
|
|
.fg label{display:block;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--sv);margin-bottom:.35rem}
|
|
.fg input,.fg select,.fg textarea{width:100%;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:.7rem .9rem;font-size:.88rem;color:var(--w);font-family:'Outfit';outline:none;transition:border .3s}
|
|
.fg input:focus,.fg select:focus,.fg textarea:focus{border-color:var(--a)}
|
|
.fg input::placeholder,.fg textarea::placeholder{color:rgba(255,255,255,.2)}
|
|
.fg select{cursor:pointer;-webkit-appearance:none}
|
|
.fr{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}
|
|
.btn{width:100%;padding:.85rem;border:none;border-radius:10px;font-family:'Outfit';font-size:.95rem;font-weight:700;cursor:pointer;transition:all .3s;margin-top:.5rem}
|
|
.btn-g{background:var(--a);color:var(--bg)}.btn-g:hover{background:#00e6be;transform:translateY(-1px)}
|
|
.btn-w{background:var(--p);color:#fff}.btn-w:hover{background:#9479fd}
|
|
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
|
|
.result{display:none;margin-top:1.5rem;background:rgba(0,201,167,.05);border:1px solid rgba(0,201,167,.2);border-radius:12px;padding:1.5rem}
|
|
.result h3{font-size:1rem;font-weight:700;margin-bottom:.8rem;color:var(--a)}
|
|
.key-box{background:rgba(0,0,0,.3);border:1px solid rgba(0,201,167,.15);border-radius:8px;padding:.8rem 1rem;font-family:'Space Mono',monospace;font-size:.85rem;color:var(--a);display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;word-break:break-all}
|
|
.key-box button{background:var(--a);color:var(--bg);border:none;padding:.3rem .8rem;border-radius:6px;font-weight:600;font-size:.75rem;cursor:pointer;white-space:nowrap;margin-left:.5rem}
|
|
.endpoints{font-size:.8rem;color:var(--sv);line-height:1.8}
|
|
.endpoints code{background:rgba(0,201,167,.1);padding:.1rem .3rem;border-radius:4px;font-family:'Space Mono',monospace;font-size:.75rem;color:var(--a)}
|
|
.products-status{margin-top:2rem}
|
|
.ps-item{display:flex;align-items:center;gap:.8rem;padding:.8rem;border-bottom:1px solid rgba(255,255,255,.03)}
|
|
.ps-icon{font-size:1.2rem;width:36px;text-align:center}
|
|
.ps-name{font-weight:600;font-size:.88rem;flex:1}
|
|
.ps-badge{font-family:'Space Mono',monospace;font-size:.62rem;font-weight:700;padding:.2rem .5rem;border-radius:100px}
|
|
.b-live{background:rgba(0,201,167,.15);color:var(--a)}
|
|
.b-live{background:rgba(240,198,116,.15);color:var(--g)}
|
|
.b-live{background:rgba(124,92,252,.15);color:var(--p)}
|
|
.toast{position:fixed;bottom:2rem;right:2rem;background:var(--a);color:var(--bg);padding:.6rem 1rem;border-radius:8px;font-weight:600;font-size:.82rem;z-index:2000;display:none}
|
|
@media(max-width:600px){.fr{grid-template-columns:1fr}}
|
|
.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}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="stylesheet" href="/assets/dark-iframe.css"></head><body>
|
|
|
|
<nav><div class="logo">WEVAL<span>Products</span></div><a href="/products/" style="color:var(--sv);text-decoration:none;font-size:.82rem">← Catalogue</a></nav>
|
|
|
|
<div class="main">
|
|
<h1>Créez votre compte</h1>
|
|
<p class="sub">Accédez à tous les produits WEVAL avec une seule clé API</p>
|
|
|
|
<div class="tabs">
|
|
<div class="tab active" onclick="showTab('signup')"> Inscription</div>
|
|
<div class="tab" onclick="showTab('waitlist')"> Waitlist</div>
|
|
<div class="tab" onclick="showTab('status')"> Statut produits</div></div>
|
|
|
|
<!-- SIGNUP -->
|
|
<div class="panel active" id="panel-signup">
|
|
<div class="form-box">
|
|
<div class="fr">
|
|
<div class="fg"><label>Prénom & Nom</label><input type="text" id="s-name" placeholder="ex: Yacine Mahboub"></div>
|
|
<div class="fg"><label>Email professionnel</label><input type="email" id="s-email" placeholder="vous@entreprise.com"></div></div>
|
|
<div class="fr">
|
|
<div class="fg"><label>Entreprise</label><input type="text" id="s-company" placeholder="ex: Groupe OCP"></div>
|
|
<div class="fg"><label>Produit principal</label>
|
|
<select id="s-product"><option value="all">Tous les produits</option><option value="deliverscore">DeliverScore</option><option value="medreach">MedReach API</option><option value="gpu">WEVIA Inference</option><option value="content">AI Content Factory</option><option value="proposalai">ProposalAI</option><option value="blueprintai">BlueprintAI</option></select></div></div>
|
|
<button class="btn btn-g" onclick="signup()">Créer mon compte + API key →</button></div>
|
|
<div class="result" id="signup-result">
|
|
<h3>Compte créé !</h3>
|
|
<p style="font-size:.85rem;color:var(--sv);margin-bottom:1rem">Votre clé API universelle :</p>
|
|
<div class="key-box"><span id="api-key-display"></span><button onclick="copyKey()">Copier</button></div>
|
|
<div class="endpoints" id="endpoints-display"></div></div></div>
|
|
|
|
<!-- WAITLIST -->
|
|
<div class="panel" id="panel-waitlist">
|
|
<div class="form-box">
|
|
<div class="fr">
|
|
<div class="fg"><label>Prénom & Nom</label><input type="text" id="w-name" placeholder="ex: Yacine Mahboub"></div>
|
|
<div class="fg"><label>Email</label><input type="email" id="w-email" placeholder="vous@entreprise.com"></div></div>
|
|
<div class="fg"><label>Produit souhaité</label>
|
|
<select id="w-product"><option value="">— Choisir —</option><option value="LeadForge">LeadForge — B2B Lead Intelligence</option><option value="FormBuilder">FormBuilder IA</option><option value="WEVIA White-Label">WEVIA White-Label</option><option value="MailWarm">MailWarm</option><option value="Sentinel Monitor">Sentinel Monitor</option><option value="OutreachAI">OutreachAI</option><option value="Partner Program">Partner Program</option><option value="StoreForge">StoreForge E-commerce</option></select></div>
|
|
<div class="fg"><label>Votre besoin (optionnel)</label><textarea id="w-msg" rows="3" placeholder="Décrivez brièvement ce que vous cherchez..."></textarea></div>
|
|
<button class="btn btn-w" onclick="joinWaitlist()">Rejoindre la waitlist →</button></div>
|
|
<div class="result" id="waitlist-result" style="border-color:rgba(124,92,252,.2);background:rgba(124,92,252,.05)">
|
|
<h3 style="color:var(--p)">Inscrit !</h3>
|
|
<p id="wl-msg" style="font-size:.85rem;color:var(--sv)"></p></div></div>
|
|
|
|
<!-- STATUS -->
|
|
<div class="panel" id="panel-status">
|
|
<div class="products-status">
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg></div><div class="ps-name">DeliverScore</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><div class="ps-name">MedReach API</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2a7 7 0 017 7c0 3-2 5-4 6v1H9v-1c-2-1-4-3-4-6a7 7 0 017-7z"/><line x1="9" y1="18" x2="15" y2="18"/></svg></div><div class="ps-name">WEVIA Inference</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon">✍</div><div class="ps-name">AI Content Factory</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><div class="ps-name">ProposalAI</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><div class="ps-name">BlueprintAI</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><div class="ps-name">LeadForge</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><div class="ps-name">FormBuilder IA</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2a7 7 0 017 7c0 3-2 5-4 6v1H9v-1c-2-1-4-3-4-6a7 7 0 017-7z"/><line x1="9" y1="18" x2="15" y2="18"/></svg></div><div class="ps-name">WEVIA White-Label</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="4" width="20" height="16" rx="2"/><polyline points="22,6 12,13 2,6"/></svg></div><div class="ps-name">MailWarm</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><div class="ps-name">Sentinel Monitor</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><div class="ps-name">OutreachAI</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><div class="ps-name">Partner Program</div><span class="ps-badge b-live">LIVE</span></div>
|
|
<div class="ps-item"><div class="ps-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.68 13.39a2 2 0 002 1.61h9.72a2 2 0 002-1.61L23 6H6"/></svg></div><div class="ps-name">StoreForge</div><span class="ps-badge b-live">LIVE</span></div></div></div></div>
|
|
|
|
<div class="toast" id="toast"></div>
|
|
|
|
<script>
|
|
const API = '/api/products/auth.php';
|
|
|
|
function showTab(t) {
|
|
document.querySelectorAll('.tab').forEach((el,i) => el.classList.toggle('active', el.textContent.includes(t==='signup'?'Inscription':t==='waitlist'?'Waitlist':'Statut')));
|
|
document.querySelectorAll('.panel').forEach(p => p.classList.remove('active'));
|
|
document.getElementById('panel-'+t).classList.add('active');
|
|
}
|
|
|
|
function toast(m){const t=document.getElementById('toast');t.textContent=m;t.style.display='block';setTimeout(()=>t.style.display='none',3000)}
|
|
|
|
async function signup() {
|
|
const name=document.getElementById('s-name').value.trim();
|
|
const email=document.getElementById('s-email').value.trim();
|
|
const company=document.getElementById('s-company').value.trim();
|
|
const product=document.getElementById('s-product').value;
|
|
if(!name||!email){toast(' Nom et email requis');return}
|
|
|
|
try {
|
|
const r = await fetch(API, {method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name,email,company,product})});
|
|
const d = await r.json();
|
|
if(d.error){toast(' '+d.error);return}
|
|
|
|
document.getElementById('api-key-display').textContent = d.api_key;
|
|
let eps = '<strong>Vos endpoints :</strong><br>';
|
|
if(d.endpoints){Object.entries(d.endpoints).forEach(([k,v])=>{eps+=`<code>${k}</code> → ${v}<br>`})}
|
|
if(d.limits){eps+='<br><strong>Limites (free tier) :</strong><br>';Object.entries(d.limits).forEach(([k,v])=>{eps+=`<code>${k}</code> → ${v}<br>`})}
|
|
document.getElementById('endpoints-display').innerHTML = eps;
|
|
document.getElementById('signup-result').style.display = 'block';
|
|
toast(' Compte créé !');
|
|
} catch(e) {
|
|
// Fallback local
|
|
const key = 'wv_' + Math.random().toString(36).substring(2,18);
|
|
document.getElementById('api-key-display').textContent = key;
|
|
document.getElementById('endpoints-display').innerHTML = `
|
|
<strong>Vos endpoints :</strong><br>
|
|
<code>DeliverScore</code> → /api/deliverscore/scan.php?domain=DOMAIN&api_key=${key}<br>
|
|
<code>MedReach</code> → /api/medreach/search.php?api_key=${key}<br>
|
|
<code>GPU</code> → /api/gpu/chat.php (X-API-Key: ${key})<br>
|
|
<code>Content</code> → /api/content/generate.php (X-API-Key: ${key})<br>
|
|
<br><strong>Apps web (accès libre) :</strong><br>
|
|
<code>ProposalAI</code> → <a href="/products/proposalai.html" style="color:var(--a)">/products/proposalai.html</a><br>
|
|
<code>BlueprintAI</code> → <a href="/products/blueprintai.html" style="color:var(--a)">/products/blueprintai.html</a><br>
|
|
`;
|
|
document.getElementById('signup-result').style.display = 'block';
|
|
toast(' Compte créé (mode local)');
|
|
}
|
|
}
|
|
|
|
async function joinWaitlist() {
|
|
const name=document.getElementById('w-name').value.trim();
|
|
const email=document.getElementById('w-email').value.trim();
|
|
const product=document.getElementById('w-product').value;
|
|
const message=document.getElementById('w-msg').value.trim();
|
|
if(!email||!product){toast(' Email et produit requis');return}
|
|
|
|
try {
|
|
const r = await fetch(API+'?action=waitlist',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name,email,product,message})});
|
|
const d = await r.json();
|
|
document.getElementById('wl-msg').textContent = d.message || `Inscrit pour ${product}. On vous contacte sous 24h.`;
|
|
document.getElementById('waitlist-result').style.display = 'block';
|
|
toast(' Inscrit !');
|
|
} catch(e) {
|
|
document.getElementById('wl-msg').textContent = `Inscrit pour ${product}. On vous contacte sous 24h.`;
|
|
document.getElementById('waitlist-result').style.display = 'block';
|
|
toast(' Inscrit !');
|
|
}
|
|
}
|
|
|
|
function copyKey(){navigator.clipboard.writeText(document.getElementById('api-key-display').textContent);toast(' Clé copiée')}
|
|
</script></body></html>
|
|
<!-- WEVAL Self-Service Inject -->
|
|
<script>
|
|
if(window===window.top){
|
|
// Replace all contact mailto links with signup portal
|
|
document.querySelectorAll('a[href*="mailto:"]').forEach(a => {
|
|
if(a.classList.contains('btn-p') || a.classList.contains('btn-f') || a.classList.contains('btn-n') || a.classList.contains('btn-nav') || a.classList.contains('btn-primary') || a.classList.contains('btn-price-fill') || a.textContent.includes('Commencer') || a.textContent.includes('Commander') || a.textContent.includes('Essayer') || a.textContent.includes('Souscrire') || a.textContent.includes('Créer') || a.textContent.includes('Obtenir') || a.textContent.includes('Démarrer') || a.textContent.includes('Rejoindre')) {
|
|
a.href = '/products/workspace.html';
|
|
a.removeAttribute('target');
|
|
}
|
|
});
|
|
// Add floating CTA
|
|
const bar = document.createElement('div');
|
|
bar.innerHTML = '<div style="position:fixed;bottom:0;left:0;right:0;z-index:999;background:rgba(5,8,15,0.95);backdrop-filter:blur(10px);border-top:1px solid rgba(0,201,167,0.15);padding:0.6rem 4%;display:flex;justify-content:space-between;align-items:center"><div style="font-size:0.82rem;color:#7a8ba5"><strong style="color:#edf2f7">WEVAL Products</strong> · <span style="color:#00c9a7">Self-service</span> · Inscription en 30 secondes</div><a href="/products/workspace.html" style="background:#00c9a7;color:#05080f;padding:0.5rem 1.2rem;border-radius:6px;font-weight:700;font-size:0.82rem;text-decoration:none">Créer mon compte gratuit →</a></div>';
|
|
if(window.self===window.top){document.body.appendChild(bar);}
|
|
document.body.style.paddingBottom = '52px';
|
|
}
|
|
</script>
|