// Extracted verbatim from ui_kits/website/WebsiteAnimatedServices.jsx // (ContentComposerVis + AnimSvcCard) with asset paths rebased to this page. var React = window.React; function ContentComposerVis({active}) { var PILLS = ['Ad Copy','Landing Pages','AEO Articles','Social Posts','UGC Scripts']; var BRIEFS = [ 'Write me a Facebook ad for my skincare brand', 'Write a hero section for a fitness app landing page', 'Write an AEO article about sustainable fashion brands', 'Create an Instagram travel post and a TikTok food post', 'Write a UGC script for my jewelry brand', ]; var OUTPUTS = [ null, null, null, null, null, ]; var AD_HL = 'Glow from within. ✨'; var LP_HL = '30 Days. No Excuses. Real Results.'; var LP_SUB = 'Your AI-powered fitness coach, available 24/7.'; var [phase, setPhase] = React.useState(0); var [briefLen, setBriefLen] = React.useState(0); var [outLines, setOutLines] = React.useState(0); var [adStep, setAdStep] = React.useState(0); var [hlLen, setHlLen] = React.useState(0); var [lpStep, setLpStep] = React.useState(0); var [lpHlLen, setLpHlLen] = React.useState(0); var [lpSubLen, setLpSubLen] = React.useState(0); var [aeoStep, setAeoStep] = React.useState(0); var [aeoLoaded, setAeoLoaded] = React.useState(0); var [spStep, setSpStep] = React.useState(0); var [spCarouselIdx, setSpCarouselIdx] = React.useState(0); var [ugcLineIdx, setUgcLineIdx] = React.useState(0); var [cycle, setCycle] = React.useState(0); var [blink, setBlink] = React.useState(true); var [scanning, setScanning] = React.useState(false); var [adNaturalH, setAdNaturalH] = React.useState(null); var adInnerRef = React.useRef(null); var activeRef = React.useRef(active !== false); var [resumeKey, setResumeKey] = React.useState(0); React.useEffect(function(){ activeRef.current = active !== false; if (activeRef.current) setResumeKey(function(k){ return k+1; }); }, [active]); var pillIdx = cycle % PILLS.length; var isAd = pillIdx === 0; var isLP = pillIdx === 1; var isAEO = pillIdx === 2; var isSOC = pillIdx === 3; var isUGC = pillIdx === 4; React.useEffect(function(){ if (phase === 2) { setScanning(true); var t = setTimeout(function(){ setScanning(false); }, 500); return function(){ clearTimeout(t); }; } }, [phase]); React.useEffect(function(){ if (isSOC && phase === 2) { var t = setInterval(function(){ setSpCarouselIdx(function(i){ return (i+1)%5; }); }, 2000); return function(){ clearInterval(t); setSpCarouselIdx(0); }; } }, [isSOC, phase]); React.useEffect(function(){ if (phase === 2 && isAEO) { var timers = []; for (var i = 0; i < 10; i++) { (function(idx){ timers.push(setTimeout(function(){ setAeoLoaded(function(prev){ return Math.max(prev, idx+1); }); }, idx * 600 + 1000)); })(i); } return function(){ timers.forEach(function(t){ clearTimeout(t); }); setAeoLoaded(0); }; } }, [phase, isAEO]); React.useEffect(function(){ if (isAd && adStep >= 5 && adInnerRef.current) { setAdNaturalH(adInnerRef.current.offsetHeight); } }, [isAd, adStep]); React.useEffect(function(){ var id = '__ccv-scan'; if (!document.getElementById(id)) { var s = document.createElement('style'); s.id = id; s.textContent = '@keyframes aiScan{0%{top:0%;opacity:1}85%{top:100%;opacity:1}100%{top:100%;opacity:0}}@keyframes laserReveal{0%{clip-path:inset(0 0 100% 0)}100%{clip-path:inset(0 0 0% 0)}}@keyframes laserLine{0%{top:0%;opacity:1}90%{top:100%;opacity:1}100%{top:100%;opacity:0}}@keyframes slideFromLeft{from{transform:translateX(-16px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes citedPop{0%{transform:scale(0.7);opacity:0}70%{transform:scale(1.15)}100%{transform:scale(1);opacity:1}}@keyframes marqueeScroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}@keyframes slideFromBottom{from{transform:translateY(18px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes recBlink{0%,100%{opacity:1}50%{opacity:0}}@keyframes textReveal{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0% 0 0)}}@keyframes ugcLineIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.vis-paused,.vis-paused *{animation-play-state:paused!important}'; document.head.appendChild(s); } }, []); React.useEffect(function(){ if (!activeRef.current) return; if (phase === 0) { if (briefLen < BRIEFS[pillIdx].length) { var t = setTimeout(function(){ setBriefLen(function(n){ return n+1; }); }, 46); return function(){ clearTimeout(t); }; } else { var t2 = setTimeout(function(){ setPhase(1); }, 400); return function(){ clearTimeout(t2); }; } } if (phase === 1) { var t3 = setTimeout(function(){ setPhase(2); setOutLines(0); setAdStep(0); setHlLen(0); setLpStep(0); setLpHlLen(0); setLpSubLen(0); }, 800); return function(){ clearTimeout(t3); }; } if (phase === 2) { if (scanning) return; if (isAd) { if (adStep === 0) { var t4=setTimeout(function(){setAdStep(1);},350); return function(){clearTimeout(t4);}; } if (adStep === 1) { var t5=setTimeout(function(){setAdStep(2);},350); return function(){clearTimeout(t5);}; } if (adStep === 2) { if (hlLen < AD_HL.length) { var t6=setTimeout(function(){setHlLen(function(n){return n+1;});},55); return function(){clearTimeout(t6);}; } else { var t7=setTimeout(function(){setAdStep(3);},200); return function(){clearTimeout(t7);}; } } if (adStep === 3) { var t8=setTimeout(function(){setAdStep(4);},380); return function(){clearTimeout(t8);}; } if (adStep === 4) { var t9=setTimeout(function(){setAdStep(5);},380); return function(){clearTimeout(t9);}; } if (adStep >= 5) { var t10=setTimeout(function(){setPhase(3);},2000); return function(){clearTimeout(t10);}; } } else if (isLP) { if (lpStep === 0) { var tL1=setTimeout(function(){setLpStep(1);},350); return function(){clearTimeout(tL1);}; } if (lpStep === 1) { if (lpHlLen < LP_HL.length) { var tL2=setTimeout(function(){setLpHlLen(function(n){return n+1;});},45); return function(){clearTimeout(tL2);}; } else { var tL3=setTimeout(function(){setLpStep(2);},200); return function(){clearTimeout(tL3);}; } } if (lpStep === 2) { var tL4=setTimeout(function(){setLpStep(3);},450); return function(){clearTimeout(tL4);}; } if (lpStep === 3) { var tL5=setTimeout(function(){setLpStep(4);},1800); return function(){clearTimeout(tL5);}; } if (lpStep === 4) { var tL6=setTimeout(function(){setLpStep(5);},200); return function(){clearTimeout(tL6);}; } if (lpStep === 5) { if (lpSubLen < LP_SUB.length) { var tL7=setTimeout(function(){setLpSubLen(function(n){return n+1;});},38); return function(){clearTimeout(tL7);}; } else { var tL8=setTimeout(function(){setLpStep(6);},200); return function(){clearTimeout(tL8);}; } } if (lpStep === 6) { var tL9=setTimeout(function(){setLpStep(7);},400); return function(){clearTimeout(tL9);}; } if (lpStep >= 7) { var tL10=setTimeout(function(){setPhase(3);},2000); return function(){clearTimeout(tL10);}; } } else if (isAEO) { if (aeoStep < 7) { var tAeo=setTimeout(function(){setAeoStep(function(s){return s+1;});},1000); return function(){clearTimeout(tAeo);}; } else { var tAeo2=setTimeout(function(){setPhase(3);},2000); return function(){clearTimeout(tAeo2);}; } } else if (isSOC) { if (spStep < 2) { var tSp=setTimeout(function(){setSpStep(function(s){return s+1;});},300); return function(){clearTimeout(tSp);}; } else { var tSp2=setTimeout(function(){setPhase(3);},10000); return function(){clearTimeout(tSp2);}; } } else if (isUGC) { if (ugcLineIdx < 8) { var tU=setTimeout(function(){setUgcLineIdx(function(n){return n+1;});},1200); return function(){clearTimeout(tU);}; } else { var tU2=setTimeout(function(){setPhase(3);},3000); return function(){clearTimeout(tU2);}; } } else { var lines = OUTPUTS[pillIdx]; if (outLines < lines.length) { var t11=setTimeout(function(){setOutLines(function(n){return n+1;});},600); return function(){clearTimeout(t11);}; } else { var t12=setTimeout(function(){setPhase(3);},1800); return function(){clearTimeout(t12);}; } } } if (phase === 3) { var t13 = setTimeout(function(){ setCycle(function(c){ return c+1; }); setBriefLen(0); setOutLines(0); setAdStep(0); setHlLen(0); setLpStep(0); setLpHlLen(0); setLpSubLen(0); setAeoStep(0); setAeoLoaded(0); setSpStep(0); setSpCarouselIdx(0); setUgcLineIdx(0); setPhase(0); }, 800); return function(){ clearTimeout(t13); }; } }, [phase, briefLen, outLines, adStep, hlLen, lpStep, lpHlLen, lpSubLen, cycle, scanning, aeoStep, spStep, ugcLineIdx, resumeKey]); var btnPulse = phase === 1; var AEO_CARDS = [ { name:'Claude', bg:'#fff', nameColor:'#CC785C', textColor:'#555', accentColor:'#CC785C', badgeBg:'rgba(204,120,92,0.12)', badgeColor:'#CC785C', border:'1px solid #E8E8E8', textBefore:'', brand:'YOUR BRAND', textAfter:' exemplifies sustainable sourcing and ethical practices...', logo:
}, { name:'ChatGPT', bg:'#fff', nameColor:'#10A37F', textColor:'#555', accentColor:'#10A37F', badgeBg:'rgba(16,163,127,0.12)', badgeColor:'#10A37F', border:'1px solid #E8E8E8', textBefore:'Sustainable brands like ', brand:'YOUR BRAND', textAfter:' are leading the movement...', logo: }, { name:'Gemini', bg:'#fff', nameColor:'#4285F4', textColor:'#555', accentColor:'#4285F4', badgeBg:'rgba(66,133,244,0.1)', badgeColor:'#4285F4', border:'1px solid #E8EAED', textBefore:'', brand:'YOUR BRAND', textAfter:' leads sustainability rankings for eco-fashion globally...', logo: }, { name:'Perplexity', bg:'#fff', nameColor:'#1B1B1B', textColor:'#555', accentColor:'#1B1B1B', badgeBg:'rgba(0,0,0,0.08)', badgeColor:'#1B1B1B', border:'1px solid #E0E0E0', textBefore:'Eco-conscious shoppers trust ', brand:'YOUR BRAND', textAfter:' for certified fashion...', logo: }, { name:'Copilot', bg:'#fff', nameColor:'#0078D4', textColor:'#555', accentColor:'#0078D4', badgeBg:'rgba(0,120,212,0.1)', badgeColor:'#0078D4', border:'1px solid #E0F0FF', textBefore:'For sustainable fashion, ', brand:'YOUR BRAND', textAfter:' offers certified eco products...', logo: }, { name:'Meta AI', bg:'#fff', nameColor:'#1877F2', textColor:'#555', accentColor:'#1877F2', badgeBg:'rgba(24,119,242,0.1)', badgeColor:'#1877F2', border:'1px solid #DCE8FF', textBefore:'Discover sustainable brands — ', brand:'YOUR BRAND', textAfter:' is featured across Meta AI...', logo: }, { name:'Grok', bg:'#fff', nameColor:'#1A1A1A', textColor:'#555', accentColor:'#1A1A1A', badgeBg:'rgba(0,0,0,0.07)', badgeColor:'#1A1A1A', border:'1px solid #E8E8E8', textBefore:'', brand:'YOUR BRAND', textAfter:' ranks #1 for sustainable fashion in Grok analysis...', logo: }, ]; return ({desc}