diff --git a/products/workspace.html b/products/workspace.html index dd1821258..bb107588f 100644 --- a/products/workspace.html +++ b/products/workspace.html @@ -524,6 +524,96 @@ function renderHome(){ 'emailwl':'/assets/logo-mailforge.svg', 'consultingpkg':'/assets/logo-consulting.svg', }; + +// V134 · Smart logo resolver · auto-match module key → /assets/logo-KEY.svg +// Full map for all 79 modules using existing assets in /var/www/html/assets/ +var ICONS_AUTO = { + // Match module keys to logo-*.svg / .png files that exist + svc: '/assets/logo-consulting.svg', + consultingpkg: '/assets/logo-consulting.svg', + academy: '/assets/logo-academy.svg', + weviaagency: '/assets/logo-wevia-official.svg', + wevalcrm: '/assets/logo-dashboard.svg', + cloudcost: '/assets/logo-cloudcost.svg', + pa: '/assets/logo-proposalai.svg', + bp: '/assets/logo-blueprintai.svg', + canvasai: '/assets/logo-canvasai.svg', + copyai: '/assets/logo-copyai.svg', + df: '/assets/logo-devforge.svg', + translate: '/assets/logo-translateai.svg', + meeting: '/assets/logo-meeting-summary.svg', + ppt: '/assets/logo-presentationai.svg', + contracts: '/assets/logo-contractai.svg', + bizplan: '/assets/logo-bizplan.svg', + esign: '/assets/logo-esignature.svg', + leansixsigma: '/assets/logo-leansixsigma.svg', + audit: '/assets/logo-auditcompliance.svg', + dashboardai: '/assets/logo-dashboardai.svg', + cf: '/assets/logo-content-factory.svg', + crf: '/assets/logo-creative-factory.svg', + iaarabe: '/assets/logo-wevia-official.svg', + wedroid: '/assets/logo-wevia-official.svg', + boardflow: '/assets/logo-dashboard.svg', + projectflow: '/assets/logo-dashboard.svg', + weviadesk: '/assets/logo-wevia-official.svg', + wv: '/assets/logo-dashboard.svg', + wevadsia: '/assets/logo-dashboard.svg', + da: '/assets/logo-deliverads.svg', + mailstream: '/assets/logo-mailstream.svg', + mw: '/assets/logo-mailwarm.svg', + mailforge: '/assets/logo-mailforge.svg', + oa: '/assets/logo-outreachai.svg', + smsforge: '/assets/logo-mailforge.svg', + adscontrol: '/assets/logo-adscontrol.svg', + reputationai: '/assets/logo-dashboard.svg', + newsletter: '/assets/logo-newsletter.svg', + aisdr: '/assets/logo-outreachai.svg', + aff: '/assets/logo-affiliates.svg', + campaignstudio: '/assets/logo-content-factory.svg', + linkedinmgr: '/assets/logo-outreachai.svg', + wevadsperf: '/assets/logo-deliverads.svg', + mr: '/assets/logo-medreach.svg', + medreachapi: '/assets/logo-medreach.svg', + medreachcampaign: '/assets/logo-medreach.svg', + medreachdash: '/assets/logo-medreach.svg', + healthcarecrm: '/assets/logo-medreach.svg', + wevialife: '/assets/logo-wevialife.svg', + et: '/assets/logo-ethica.svg', + dataharvest: '/assets/logo-dataharvest.svg', + scout: '/assets/logo-scout.svg', + mind: '/assets/logo-weval-mind.svg', + researchflow: '/assets/logo-weval-mind.svg', + techradar: '/assets/logo-weval-mind.svg', + yt: '/assets/logo-youtube-factory.svg', + arsenal: '/assets/logo-arsenal.svg', + sentinel: '/assets/logo-sentinel.svg', + ds: '/assets/logo-deliverscore.svg', + blacklistguard: '/assets/logo-blacklistguard.svg', + emailverify: '/assets/logo-emailverify.svg', + inboxtest: '/assets/logo-inboxtest.svg', + ispmonitor: '/assets/logo-ispmonitor.svg', + networkguard: '/assets/logo-sentinel.svg', + stackscan: '/assets/logo-sentinel.svg', + trustcenter: '/assets/logo-sentinel.svg', + consentmgr: '/assets/logo-sentinel.svg', + cloudbridge: '/assets/logo-cloudbridge.svg', + gpu: '/assets/logo-gpu-inference.svg', + fb: '/assets/logo-formbuilder.svg', + storeai: '/assets/logo-storeforge.svg', + sf: '/assets/logo-storeforge.svg', + wl: '/assets/logo-wevia-whitelabel.svg', + we: '/assets/logo-wevia-enterprise.svg', + weviaem: '/assets/logo-wevia-enterprise.svg', + emailplatform: '/assets/logo-mailstream.svg', + emailwl: '/assets/logo-wevia-whitelabel.svg', + lf: '/assets/logo-leadforge.svg', + roicalc: '/assets/logo-dashboardai.svg', + solutionfinder: '/assets/logo-weval-mind.svg', + partnerprogram: '/assets/logo-affiliates.svg', +}; +// Merge ICONS_AUTO into ICONS (ICONS takes priority) +Object.keys(ICONS_AUTO).forEach(function(k){ if(!ICONS[k]) ICONS[k] = ICONS_AUTO[k]; }); + // Recent products var recents=JSON.parse(localStorage.getItem('wv_recent')||'[]'); var favs=JSON.parse(localStorage.getItem('wv_favs')||'[]'); @@ -588,23 +678,78 @@ function getSuiteColor(suite){ return map[suite] || 'accent'; } function getFallbackLogoSVG(name, color){ - var palette = {'purple':'#8b5cf6','green':'#22c55e','orange':'#f59e0b','red':'#ef4444','accent':'#3b82f6','dim':'#64748b'}; - var c = palette[color] || palette.accent; - // Extract 2-letter abbrev (caps of first 2 words, or first 2 chars) - var words = String(name).split(/[\s-]+/).filter(Boolean); - var initials = words.length >= 2 - ? (words[0][0] + words[1][0]).toUpperCase() - : name.substring(0, 2).toUpperCase(); - // Build SVG data URL (WEVIA-style: gradient + rounded) + // V134 · Ultra premium WEVIA-inspired SVG · contextual glyph per category + dual gradient + glow + var palette = { + 'purple':{a:'#a78bfa',b:'#7c3aed',glow:'#c4b5fd'}, + 'green':{a:'#4ade80',b:'#16a34a',glow:'#86efac'}, + 'orange':{a:'#fbbf24',b:'#d97706',glow:'#fcd34d'}, + 'red':{a:'#f87171',b:'#dc2626',glow:'#fca5a5'}, + 'accent':{a:'#60a5fa',b:'#2563eb',glow:'#93c5fd'}, + 'dim':{a:'#94a3b8',b:'#475569',glow:'#cbd5e1'} + }; + var p = palette[color] || palette.accent; + var nameLC = String(name).toLowerCase(); + // V134 Contextual glyph selector (SVG path d attribute) based on name keywords + var glyph = ''; + if(/mail|email|inbox|newsletter|outreach|smsforge|campaign/i.test(nameLC)){ + // Envelope glyph + glyph = ''; + } else if(/ai|copy|canvas|paper|content|creative|blueprint|proposal|translate|contract|bizplan|esign|audit|meeting/i.test(nameLC)){ + // Document + spark glyph (AI) + glyph = ''; + } else if(/dash|board|analyt|chart|metric|insight|data|research|project|solution/i.test(nameLC)){ + // Bar chart glyph + glyph = ''; + } else if(/cloud|bridge|stack|guard|sentinel|trust|blacklist|network|ispmonitor|consent|verify/i.test(nameLC)){ + // Shield glyph + glyph = ''; + } else if(/med|pharma|health|life|ethica/i.test(nameLC)){ + // Medical cross glyph + glyph = ''; + } else if(/crm|consult|service|academy|roi|agency/i.test(nameLC)){ + // People/connection glyph + glyph = ''; + } else if(/devforge|code|stackscan|gpu|storeforge|store|platform|desk|em|whitelabel|wl|enterprise/i.test(nameLC)){ + // Code/terminal glyph + glyph = ''; + } else if(/scout|radar|techrad|ads|deliverads|deliverscore|reputation|sdr|ai.sdr/i.test(nameLC)){ + // Target glyph + glyph = ''; + } else if(/youtube|video|factory/i.test(nameLC)){ + // Play triangle + glyph = ''; + } else if(/form|builder|survey/i.test(nameLC)){ + // Form fields + glyph = ''; + } else if(/lead|forge|arsenal|prospect|affili|partner/i.test(nameLC)){ + // Funnel + glyph = ''; + } else if(/linkedin|linkedinmgr/i.test(nameLC)){ + // LinkedIn style LI + glyph = ''; + } else if(/arabe|arab|translate/i.test(nameLC)){ + // Arabic-inspired ornamental circle + glyph = ''; + } else { + // Default: WEVIA-inspired brain-lobe shape + glyph = ''; + } var svg = '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + initials + '' + - ''; + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + glyph + + ''; return 'data:image/svg+xml;utf8,' + encodeURIComponent(svg); } function switchView(v){ @@ -638,7 +783,8 @@ function renderSuites(){ groups[suite].push(k); }); // Sort suites by size DESC (biggest first) - var sortedSuites = Object.keys(groups).sort(function(a,b){ return groups[b].length - groups[a].length; }); + var sidebarOrder = ['Conseil & Services','IA & Productivite','Marketing Digital','Santé & Pharma','Data & Intelligence','Cloud & Sécurité','Enterprise']; + var sortedSuites = sidebarOrder.filter(function(s){ return groups[s]; }).concat(Object.keys(groups).filter(function(s){ return sidebarOrder.indexOf(s) === -1; })); var html = ''; sortedSuites.forEach(function(suite, idx){ var modules = groups[suite];