From ee1ce9d7917ee6372c1598c2128b2d1dec81871c Mon Sep 17 00:00:00 2001 From: Opus Date: Wed, 22 Apr 2026 00:35:53 +0200 Subject: [PATCH] V134 Opus workspace premium logos high quality + sidebar order + WEVIA-inspired glyphs - 3 demandes Yacine - demande 1 logos high quality 79 modules utilisent maintenant tous des assets SVG logo- existants dans /assets/ via ICONS_AUTO resolver 80 mappings module key to asset file logo-consulting logo-proposalai logo-blueprintai logo-medreach logo-wevialife logo-ethica logo-arsenal logo-sentinel logo-cloudbridge logo-dataharvest logo-wevia-enterprise etc - demande 2 ordre suites match sidebar exact Conseil Services 8 IA Productivite 21 Marketing 16 Sante Pharma 7 Data 6 Cloud 12 Enterprise 9 fin de la logique sort by length ancienne - demande 3 getFallbackLogoSVG upgraded ultra premium inspire WEVIA official 13 glyphs contextuels par famille mail email envelope AI document sparks dashboard chart cloud shield medical cross people code terminal scout target video play form builder funnel lead linkedin LI brain-lobe WEVIA par defaut - dual linear gradient a78bfa 7c3aed violet 4ade80 16a34a green fbbf24 d97706 orange f87171 dc2626 red 60a5fa 2563eb blue 94a3b8 475569 gray - radial shine overlay 35pct - glow filter gaussian blur 1.2 - chattr discipline - GOLD v134-workspace-premium-logos-sidebar-order/workspace.html.GOLD - Playwright 79 asset logos + 79 premium fallback + 0 broken + 7 suites sidebar order exact + zero errors pageerror - NR 153 sur 153 preserved - doctrines 1 scan 3 GOLD 4 honnete 13 cause racine 14 additif 16 non regression 60 UX premium ULTRA --- products/workspace.html | 180 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 163 insertions(+), 17 deletions(-) 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];